Cómo: Personalizar el diseño de una tabla individual mediante una plantilla de página personalizada
Actualización: noviembre 2007
Al utilizar los datos dinámicos de ASP.NET, hay dos métodos generales de definir un diseño personalizado. Las plantillas de campo se pueden personalizar para definir el comportamiento específico de un campo y las plantillas de página para definir el comportamiento específico de una tabla.
El primer método consiste en personalizar los campos de datos de una tabla creando plantillas de campo personalizadas. A continuación, se crea una clase parcial cuyo nombre coincide con la clase de entidad que representa la tabla. En la clase parcial, puede utilizar el atributo UIHintAttribute para especificar el nombre de la plantilla de campo personalizada que se utiliza para la presentación. Para obtener más información, vea Cómo: Personalizar la apariencia y el comportamiento de los campos de datos en un control de datos dinámicos.
El segundo método consiste en crear una subcarpeta en la carpeta DynamicData\CustomPages. El nombre de la subcarpeta coincide con el descriptor de acceso de la tabla en la clase de contexto de datos que corresponde a la tabla que desea personalizar. A continuación, se crea una plantilla de página personalizada en la carpeta. En este tema se muestra cómo utilizar este segundo método.
Las plantillas de página predeterminadas funcionan con todas las tablas y no utilizan la información específica del esquema. Sin embargo, puede utilizar la información del esquema para mostrar campos concretos cuando utilice plantillas de página personalizadas para tablas concretas.
Para crear una plantilla de página personalizada
Asegúrese de que está habilitada la técnica scaffolding. En el archivo Global.asax, establezca la propiedad ContextConfiguration.ScaffoldAllTables en true en el método MetaModelRegisterContext().
En el ejemplo siguiente se muestra el método RegisterRoutes que incluye una llamada para habilitar la técnica scaffolding y la acción List.
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 }); }
Para obtener más información sobre cómo habilitar la técnica scaffolding, vea Tutorial: Crear un nuevo sitio web de datos dinámicos con la técnica scaffolding.
En la carpeta DynamicData\CustomPages, cree una subcarpeta. Para el nombre de la carpeta, siga estas instrucciones:
Si el modelo de datos se basa en LINQ to SQL, utilice el nombre de tabla del contexto de datos como el nombre de la carpeta. Por ejemplo, para crear una página personalizada para la tabla Product de la base de datos AdventureWorksLT, cree un directorio denominado DynamicData\CustomPages\Products.
Si el modelo de datos se basa en ADO.NET Entity Framework, utilice el nombre de tabla del contexto del objeto como el nombre de la carpeta. Por ejemplo, para crear una página personalizada para la tabla Product de la base de datos AdventureWorksLT, cree un directorio denominado DynamicData\CustomPages\Product.
Copie una plantilla de página existente de la carpeta DynamicData\PageTemplates a la subcarpeta bajo DynamicData\CustomPages que tiene el nombre del descriptor de acceso de la tabla.
Por ejemplo, copie DynamicData\PageTemplates\List.aspx a DynamicData\CustomPages\Products (para LINQ to SQL) o a DynamicData\CustomPages\Product (para Entity Framework).
Agregue sus personalizaciones a la plantilla de página que copió en el paso anterior.
En el ejemplo siguiente se muestra el marcado de un encabezado que se ha cambiado.
<h2> Custom Pages Demo <%= table.DisplayName%></h2>
Para probar la plantilla personalizada, navegue a la tabla en un explorador y confirme que la plantilla incluye los cambios.
Por ejemplo, navegue a la tabla Product. Verá "Custom Pages Demo Product" (LINQ to SQL) y "Custom Pages Demo Product" (Entity Framework).
Vea también
Tareas
Tutorial: Crear un nuevo sitio web de datos dinámicos con la técnica scaffolding