ModelMetaData este un concept important în MVC, incluzând, dar fără a se limita la, tipul modelului, atributele pe care le conține modelul, ce tipuri de atribute există și ce caracteristici se află pe aceste atribute.
ASP.NET MVC3.0 oferă metadatele implicite ale modelului DataAnnotationsModelMetadata moștenește de la ModelMetadata (în plus, sistemul oferă furnizorul implicit de metadate ale modelului DataAnnotationsModelMetadataProvider)
clasa publică DataAnnotationsModelMetadata : ModelMetadata
Constructorul său este următorul
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider furnizor, Tip containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Clasa DataAnnotationsModelMetadata are mai multe proprietăți utilizate frecvent
Nume de afișare DisplayName, șirul de format DisplayFormatString
TemplateHint primește o valoare pentru a alege ce șablon să folosească
Pentru DisplayName, metoda LabelFor<TModel, TValue> folosește această proprietate pentru a genera textul etichetei. Asta înseamnăOdată ce proprietatea DispalyName este definită pe modelul nostru, folosiți metoda html.editForModel() în vizualizareVa afișa automat eticheta "<etichetă pentru="username" > numele </ pentru acest atribut</label> al modelului.
[display( name="name",order=2)] //order modifică ordinea paginii html nume de utilizator public string { get; set; }
Cod sursă HTML:
Proprietatea Display folosită pe atributul nume de utilizator este clasa System.ComponentModel.DataAnnotations.DisplayAttribute, care oferă o caracteristică generică ce permite specificarea șirurilor localizabile pentru tipul și membrul clasei de diviziune a entității
Există și funcționalități din System.Web.MVC și System.ComponentModel.DataAnnotations, ale căror nume sunt toate clase de caracteristici similare cu XXXXAttribute, toate având domenii specifice de utilizare, unele restricționând proprietăți ale modelului, altele restricționând Contrller, altele restricționând acțiuni etc.
Următoarea este o listă a claselor de caracteristici încorporate și utilizate frecvent în aceste două spații de nume
1) Spațiul System.Web.MVC
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeOutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute reprezintă clasa de bază a tuturor proprietăților filtrului de acțiune
HttpDeleteAttribute, care reprezintă o proprietate folosită pentru a restricționa metoda de operare astfel încât metoda să gestioneze doar cererile HTTP DELETE
HttpGetAttribute, un atribut HttpPostAttribute care restricționează metoda de operare să proceseze doar cererile PUT
HttpPutAttribute reprezintă o proprietate folosită pentru a restricționa metoda de operare, astfel încât metoda să gestioneze doar cererile HTTP PUT.
Exemplu: ActionNameAttribute specifică numele real al acțiunii, iar utilizarea este următoarea
[ActionName()]
Public ActionResult Index()
Exemplu: Clasa HiddenInputAttribute, care reprezintă o proprietate ce indică dacă o valoare de proprietate sau o valoare a câmpului trebuie redată ca element de intrare ascuns |