Практическое руководство. Изменение расположения папки платформы динамических данных
По умолчанию для хранения файлов данных платформы динамических данных используется корневой каталог веб-приложения. Для работы некоторых веб-приложений может потребоваться перемещение файлов платформы динамических данных в другой каталог.
В этом разделе показано, как перемещать папку с файлами платформы динамических данных в существующем веб-приложении платформы динамических данных. Дополнительные сведения о добавлении платформы динамических данных на существующий веб-сайт см. в разделе Пошаговое руководство. Добавление платформы динамических данных на существующие веб-сайты ASP.NET.
Изменение расположения файлов платформы динамических данных
На веб-сайте создайте новую папку и переместите в нее содержимое папки DynamicData.
Например, на уровне корневого каталога веб-приложения создайте папку AdminTools и переместите в нее папку DynamicData.
Откройте файл Global.asax.
В коде задайте в качестве значения свойства 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>
Сохраните изменения и закройте файл Global.asax.
Откройте файл List.aspx и ListDetails.aspx.
В директиве @ 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" %>
Откройте файл List.aspx.
В элементе 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>
См. также
Другие ресурсы
Пошаговое руководство. Добавление платформы динамических данных на существующие веб-сайты ASP.NET