Comment : personnaliser la disposition d'une table en utilisant un modèle de page personnalisé
Mise à jour : novembre 2007
Lorsque vous utilisez Dynamic Data ASP.NET, vous avez le choix entre deux approches pour procéder à une définition personnalisée. Il est possible de personnaliser les modèles de champs avec un comportement de champ spécifique et les modèles de pages avec un comportement de table spécifique.
La première approche consiste à personnaliser des champs de données dans une table en créant des modèles de champs personnalisés. Vous créez ensuite une classe partielle dont le nom correspond à la classe d'entité qui représente la table. Dans la classe partielle, vous pouvez utiliser l'attribut UIHintAttribute pour spécifier le nom du modèle de champ personnalisé utilisé pour l'affichage. Pour plus d'informations, consultez Comment : personnaliser l'apparence et le comportement d'un champ de données dans un contrôle Dynamic Data.
La seconde approche consiste à créer un sous-dossier dans le dossier DynamicData\CustomPages. Le nom du sous-dossier correspond à l'accesseur de table dans la classe du contexte des données de la table que vous souhaitez personnaliser. Vous créez ensuite un modèle de page personnalisé dans le dossier. Cette rubrique vous indique comment suivre cette seconde approche.
Les modèles de pages par défaut fonctionnent pour toutes les tables et n'utilisent pas d'informations spécifiques aux schémas. Toutefois, vous pouvez utiliser des informations de schéma pour afficher des champs spécifiques lorsque vous utilisez des modèles de pages personnalisés pour des tables spécifiques.
Pour créer un modèle de page personnalisé
Assurez-vous que la génération de modèles automatique est activée. Dans le fichier Global.asax, affectez à la propriété ContextConfiguration.ScaffoldAllTables la valeur true dans la méthode MetaModelRegisterContext().
L'exemple suivant illustre la méthode RegisterRoutes qui inclut un appel pour activer la génération de modèles automatique et activer l'action 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 }); }
Pour plus d'informations sur l'activation de la génération de modèles automatique, consultez Procédure pas à pas : création d'un nouveau site Web Dynamic Data à l'aide de la génération de modèles automatique.
Dans le dossier DynamicData\CustomPages, créez un sous-dossier. Pour le nom du dossier, suivez ces règles :
Si le modèle de données est basé sur LINQ to SQL, utilisez le nom de la table dans le contexte de données comme nom du dossier. Par exemple, pour créer une page personnalisée pour la table Product dans la base de données AdventureWorksLT, créez un répertoire nommé DynamicData\CustomPages\Products.
Si le modèle de données est basé sur ADO.NET Entity Framework, utilisez le nom de la table dans le contexte de l'objet comme nom du dossier. Par exemple, pour créer une page personnalisée pour la table Product dans la base de données AdventureWorksLT, créez un répertoire nommé DynamicData\CustomPages\Product.
Copiez un modèle de page existant du dossier DynamicData\PageTemplates vers le sous-dossier DynamicData\CustomPages du nom de l'accesseur de table.
Par exemple, copiez DynamicData\PageTemplates\List.aspx vers DynamicData\CustomPages\Products (pour LINQ to SQL) ou vers DynamicData\CustomPages\Product (pour Entity Framework).
Ajoutez vos personnalisations au modèle de page que vous avez copié à l'étape précédente.
L'exemple suivant illustre le balisage d'un titre qui a été modifié.
<h2> Custom Pages Demo <%= table.DisplayName%></h2>
Pour tester le modèle personnalisé, naviguez jusqu'à la table dans un navigateur et vérifiez que le modèle inclut vos modifications.
Par exemple, naviguez jusqu'à la table Product. Vous verrez « Custom Pages Demo Product » (LINQ to SQL) et « Custom Pages Demo Product » (Entity Framework).
Voir aussi
Tâches
Concepts
Vue d'ensemble des modèles de pages et de la génération de modèles automatique Dynamic Data ASP.NET