Практическое руководство. Изменение расположения папки платформы динамических данных

По умолчанию для хранения файлов данных платформы динамических данных используется корневой каталог веб-приложения. Для работы некоторых веб-приложений может потребоваться перемещение файлов платформы динамических данных в другой каталог.

В этом разделе показано, как перемещать папку с файлами платформы динамических данных в существующем веб-приложении платформы динамических данных. Дополнительные сведения о добавлении платформы динамических данных на существующий веб-сайт см. в разделе Пошаговое руководство. Добавление платформы динамических данных на существующие веб-сайты ASP.NET.

Изменение расположения файлов платформы динамических данных

  1. На веб-сайте создайте новую папку и переместите в нее содержимое папки DynamicData.

    Например, на уровне корневого каталога веб-приложения создайте папку AdminTools и переместите в нее папку DynamicData.

  2. Откройте файл Global.asax.

  3. В коде задайте в качестве значения свойства DynamicDataFolderVirtualPath класса MetaModel новый путь. Это обычно делается для метода, используемого для регистрации маршрутов.

    В следующем примере показано, как задать для свойства DynamicDataFolderVirtualPath значение "~/AdminTools/DynamicData".

    <%@ Application Language="C#" %>
    <%@ Import Namespace="System.Web.Routing" %>
    <%@ Import Namespace="System.Web.DynamicData" %>
    
    <script runat="server">
    public static void RegisterRoutes(RouteCollection routes) {
        MetaModel model = new MetaModel();
        model.RegisterContext(typeof(AdventureWorksLT2008Model.AdventureWorksLT2008Entities), 
            new ContextConfiguration() { ScaffoldAllTables = true });
    
            model.DynamicDataFolderVirtualPath = "~/AdminTools/DynamicData";
    
            routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
                Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
                Model = model
        });
    }
    
    void Application_Start(object sender, EventArgs e) {
        RegisterRoutes(RouteTable.Routes);
    }
    </script>
    

    <%@ Application Language="VB" %>
    <%@ Import Namespace="System.Web.Routing" %>
    <%@ Import Namespace="System.Web.DynamicData" %>
    
    <script RunAt="server">
        Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
            Dim model As New MetaModel
    
            model.RegisterContext(GetType(AdventureWorksLT2008Model.AdventureWorksLT2008Entities), _
                                  New ContextConfiguration() With {.ScaffoldAllTables = True})
    
            model.DynamicDataFolderVirtualPath = "~/AdminTools/DynamicData"
            
            routes.Add(New DynamicDataRoute("{table}/{action}.aspx") With { _
                .Constraints = New RouteValueDictionary(New With {.Action = "List|Details|Edit|Insert"}), _
                .Model = model})
        End Sub
    
        Private Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            RegisterRoutes(RouteTable.Routes)
        End Sub
    
    </script>
    
  4. Сохраните изменения и закройте файл Global.asax.

  5. Откройте файл List.aspx и ListDetails.aspx.

  6. В директиве @ Register элементов управления GridViewPager и FilterUserControl измените атрибут src, чтобы он отражал новый путь.

    В следующем примере приведена директива @ Register страницы приложения, в которой папка DynamicData была перемещена в папку AdminTools.

    <%@ Register src="~/AdminTools/DynamicData/Content/GridViewPager.ascx" 
        tagname="GridViewPager" tagprefix="asp" %>
    <%@ Register src="~/AdminTools/DynamicData/Content/FilterUserControl.ascx" 
        tagname="DynamicFilter" tagprefix="asp" %>
    
  7. Откройте файл List.aspx.

  8. В элементе img измените значение атрибута src так, чтобы он отражал новый путь, как показано в следующем примере.

    <div class="bottomhyperlink">
      <asp:HyperLink ID="InsertHyperLink" runat="server">
      <img runat="server" 
           src="~/AdminTools/DynamicData/Content/Images/plus.gif" 
           alt="Insert new item" />
        Insert new item
      </asp:HyperLink>
    </div>
    
Показ: