ModelMetaData je dôležitý pojem v MVC, vrátane, ale nielen, typu modelu, aké atribúty model obsahuje, aké typy atribútov sa nachádzajú a aké charakteristiky sú na atribútoch.
ASP.NET MVC3.0 poskytuje predvolené metadáta modelu DataAnnotationsModelMetadata dedí z ModelMetadata (okrem toho systém poskytuje predvoleného poskytovateľa metadát modelu DataAnnotationsModelMetadataProvider)
public class DataAnnotationsModelMetadata : ModelMetadata
Jeho konštruktor je nasledovný
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Trieda DataAnnotationsModelMetaData má niekoľko bežne používaných vlastností
DisplayName, zobrazenie mena, formátový reťazec DisplayFormatString
TemplateHint získa hodnotu na výber šablóny
Pre DisplayName používa metóda LabelFor<TModel, TValue> túto vlastnosť na generovanie textu štítku. Znamená toKeď je vlastnosť DispalyName definovaná na našom modeli, použite metódu html.editForModel() v zobrazeníAutomaticky zobrazí značku "<label for="username" > názov </ pre tento atribút</label> modelu.
[display( name="name",order=2)] //attribute mení poradie HTML stránky public string username { get; set; }
Zdrojový kód HTML:
Vlastnosť Display používaná v atribúte používateľského mena je trieda System.ComponentModel.DataAnnotations.DisplayAtribút, ktorá poskytuje všeobecnú funkciu umožňujúcu špecifikovať lokalizovateľné reťazce pre typ a člena triedy delenia entity
Sú tu aj funkcie od System.Web.MVC a System.ComponentModel.DataAnnotations, ktorých názvy sú všetky triedy funkcií podobné XXXXAttribute, pričom každá má špecifické rozsahy použitia, niektoré obmedzujú vlastnosti modelu, niektoré Contrller, niektoré Actions a podobne.
Nasleduje zoznam vstavaných a bežne používaných tried príznakov v týchto dvoch menných priestoroch
1) Priestor System.Web.MVC
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute predstavuje základnú triedu všetkých vlastností akčného filtra
Trieda HttpDeleteAttribut, ktorá predstavuje vlastnosť používanú na obmedzenie operačnej metódy tak, aby táto metóda spracovávala iba HTTP DELETE požiadavky
HttpGetAttribute, atribút HttpPostAttribute, ktorý obmedzuje operačnú metódu len na spracovanie PUT požiadaviek
HttpPutAttribute predstavuje vlastnosť, ktorá sa používa na obmedzenie operačnej metódy tak, aby metóda spracovávala iba HTTP PUT požiadavky.
Príklad: ActionNameAttribute špecifikuje skutočný názov akcie a jeho použitie je nasledovné
[ActionName()]
verejný ActionResult Index()
Príklad: Trieda HiddenInputAtribút, ktorá predstavuje vlastnosť určujúcu, či by mala byť hodnota vlastnosti alebo pole zobrazená ako skrytý vstupný prvok |