ModelMetaData est un concept important dans le MVC, incluant mais sans s’y limiter au type de modèle, aux attributs qu’il contient, aux types d’attributs présents et aux caractéristiques présentes sur ces attributs.
ASP.NET MVC3.0 fournit les métadonnées par défaut du modèle DataAnnotationsModelMetadata hérite de ModelMetadata (de plus, le système fournit le fournisseur de métadonnées de modèle par défaut DataAnnotationsModelMetadataProvider)
classe publique DataAnnotationsModelMetadata : ModelMetadata
Son constructeur est le suivant
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, AfficherColonneAttribut afficherColonneAttribut) ;
La classe DataAnnotationsModelMetadata possède plusieurs propriétés couramment utilisées
Nom d’affichage Nom d’affichage, chaîne de format DisplayFormat String
TemplateHint obtient une valeur pour choisir quel modèle utiliser
Pour DisplayName, la méthode LabelFor<TModel, TValue> utilise cette propriété pour générer le texte de l’étiquette. Cela signifieUne fois la propriété DispalyName définie sur notre modèle, utilisez alors la méthode html.editForModel() en vueIl affichera automatiquement l’étiquette « <étiquette pour="nom d’utilisateur » > le nom </ pour cet attribut</label> du modèle.
[display( name="name »,order=2)] //order change l’ordre de la page HTML Nom d’utilisateur de chaîne publique { get ; set ; }
Code source HTML :
La propriété Display utilisée sur l’attribut nom d’utilisateur est la classe System.ComponentModel.DataAnnotations.DisplayAttribute, qui fournit une fonctionnalité générique permettant de spécifier des chaînes localisables pour le type et le membre de la classe de division d’entité
Il existe également des fonctionnalités issues de System.Web.MVC et System.ComponentModel.DataAnnotations, dont les noms sont tous des classes de caractéristiques similaires à XXXXAttribute, chacune ayant des champs d’application spécifiques, certaines restreignant les propriétés du modèle, d’autres restreignant les Contrller, d’autres restreignant les actions, etc.
Voici une liste des classes de caractéristiques intégrées et couramment utilisées dans ces deux espaces de noms
1) Espace System.Web.MVC
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeOutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute représente la classe de base de toutes les propriétés du filtre d’action
classe HttpDeleteAttribute, qui représente une propriété utilisée pour restreindre la méthode d’opération afin que celle-ci ne gère que les requêtes HTTP DELETE
HttpGetAttribute, un attribut HttpPostAttribute qui restreint la méthode d’opération à traiter uniquement les requêtes PUT
HttpPutAttribute représente une propriété utilisée pour restreindre la méthode d’opération afin que la méthode ne gère que les requêtes HTTP PUT.
Exemple : ActionNameAttribute spécifie le nom réel de l’action, et son usage est le suivant
[ActionName()]
public ActionResult Index ()
Exemple : la classe HiddenInputAttribute, qui représente une propriété indiquant si une valeur de propriété ou une valeur de champ doit être rendue comme élément d’entrée caché |