Практическое руководство. Настройка макета отдельной таблицы путем использования пользовательского шаблона страниц

Visual Studio 2010

Обновлен: Ноябрь 2007

При использовании с платформой динамических данных ASP.NET возможны два принципиальных подхода к настройке. Можно настроить шаблоны полей для получения требуемого поведения в отношении полей и можно настроить шаблоны страниц для получения требуемого поведения в отношении страниц.

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

Второй подход — создать подпапку в папке DynamicData\CustomPages. Имя этой подпапки совпадает с именем метода доступа к таблице в классе контекста данных таблицы, которую требуется настроить. Затем в этой папке создается пользовательский шаблон страниц. В этом разделе показано использование второго подхода.

Шаблоны страниц, предусмотренные по умолчанию, работают для всех таблиц и не используют сведения о схеме. Тем не менее, сведения о схеме можно использовать для отображения определенных полей при использовании пользовательских шаблонов страниц для определенных таблиц.

Чтобы создать пользовательский шаблон страниц

  1. Убедитесь, что включен механизм формирования шаблонов. В файле Global.asax задайте равным true значение свойства ContextConfiguration.ScaffoldAllTables в методе MetaModelRegisterContext().

    В следующем примере кода показан метод RegisterRoutes, включающий вызов для включения формирования шаблонов и для включения действия "Список".

    Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        Dim model As New MetaModel
        model.RegisterContext(GetType(AdventureWorksLTDataContext), _
            New ContextConfiguration() With {.ScaffoldAllTables = True})
    
        routes.Add(New DynamicDataRoute("{table}/{action}.aspx") With { _
             .Constraints = New RouteValueDictionary(New With _
                {.Action = "List|Details|Edit|Insert"}), _
                 .Model = model})
            
    End Sub
    

    public static void RegisterRoutes(RouteCollection routes) {
         MetaModel model = new MetaModel();
         
        model.RegisterContext(typeof(AdventureWorksLTDataContext), 
            new ContextConfiguration() { ScaffoldAllTables = true });
    
         routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
         {
             Constraints = new RouteValueDictionary(new { action = 
                "List|Details|Edit|Insert" }),
                Model = model
            });
        }
    

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

  2. Создайте подпапку в папке DynamicData\CustomPages. Дайте папке имя, принимая во внимание следующие рекомендации.

    • Если модель данных основана на LINQ to SQL, используйте в качестве имени папки имя таблицы в контексте данных. Например, для создания пользовательской страницы для таблицы Product в базе данных AdventureWorksLT создайте каталог с именем DynamicData\CustomPages\Products.

    • Если модель данных основана на платформе ADO.NET Entity Framework, используйте в качестве имени папки имя таблицы в контексте объекта. Например, для создания пользовательской страницы для таблицы Product в базе данных AdventureWorksLT создайте каталог с именем DynamicData\CustomPages\Product.

  3. Скопируйте существующий шаблон страниц их папки DynamicData\PageTemplates в подпапку в папке DynamicData\CustomPages, имя которой совпадает с именем метода доступа к таблице.

    Например, скопируйте DynamicData\PageTemplates\List.aspx в DynamicData\CustomPages\Products (LINQ to SQL) или в DynamicData\CustomPages\Product (Entity Framework).

  4. Внесите требуемые изменения в шаблон таблицы, скопированный на предыдущем шаге.

    В следующем примере показана разметка для заголовка, который был изменен.

    <h2> Custom Pages Demo <%= table.DisplayName%></h2>
    
  5. Чтобы протестировать пользовательский шаблон, перейдите к таблице в веб-обозревателе и убедитесь, что внесенные изменения отражены в шаблоне.

    Например, перейдите к таблице Products. Вы увидите "Custom Pages Demo Product" (LINQ to SQL) и "Custom Pages Demo Product" (Entity Framework).

Показ: