ModelMetaData on tärkeä käsite MVC:ssä, mukaan lukien mutta ei rajoittuen mallin tyyppiin, mallin ominaisuuksiin, ominaisuuksiin ja ominaisuuksiin.
ASP.NET MVC3.0 tarjoaa oletusmallin metatiedon DataAnnotationsModelMetadata perii ModelMetadatalta (lisäksi järjestelmä tarjoaa oletusmallin metatietojen tarjoajan DataAnnotationsModelMetadataProvider)
public class DataAnnotationsModelMetadata : ModelMetadata
Sen rakentaja on seuraava
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadata-luokassa on useita yleisesti käytettyjä ominaisuuksia
DisplayName-näyttönimi, DisplayFormatString-muotomerkkijono
TemplateHint saa arvon, jolla voi valita, mitä mallipohjaa käyttää
DisplayName-toiminnossa LabelFor<TModel, TValue> -menetelmä käyttää tätä ominaisuutta tunnistetekstin luomiseen. Se tarkoittaaKun DispalyName-ominaisuus on määritelty mallissamme, käytä html.editForModel()-metodia näkyvissäSe näyttää automaattisesti tunnisteen "<label for="username" > name </ tälle mallin attribuutille</label>.
[display( name="name",order=2)] //order-attribuutti muuttaa html-sivun järjestystä julkinen merkkijonon käyttäjänimi { get; setti; }
HTML-lähdekoodi:
Käyttäjätunnus-attribuutissa käytetty Display-ominaisuus on System.ComponentModel.DataAnnotations.DisplayAttribute-luokka, joka tarjoaa yleisen ominaisuuden, jonka avulla voit määrittää lokalisoitavia merkkijonoja entiteettijakoluokan tyypille ja jäsenelle
Ominaisuuksia löytyy myös System.Web.MVC:stä ja System.ComponentModel.DataAnnotationsista, joiden nimet ovat ominaisuusluokkia, jotka ovat samankaltaisia kuin XXXXAttribute, joilla kaikilla on omat käyttöalueet: osa rajoittaa mallin ominaisuuksia, osa rajoittaa Contrlleria, osa rajoittaa toimintoja jne.
Seuraavassa on luettelo näiden kahden nimiavaruuden sisäänrakennettuista ja yleisesti käytetyistä ominaisuusluokista
1) System.Web.MVC-tila
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute edustaa kaikkien toimintasuodatinominaisuuksien perusluokkaa
HttpDeleteAttribute-luokka, joka edustaa ominaisuutta, jota käytetään rajoittamaan toimintatapaa siten, että metodi käsittelee vain HTTP DELETE -pyyntöjä
HttpGetAttribute, HttpPostAttribute-attribuutti, joka rajoittaa toimintatavan käsittelemään vain PUT-pyyntöjä
HttpPutAttribute edustaa ominaisuutta, jota käytetään rajoittamaan toimintatapaa siten, että metodi käsittelee vain HTTP PUT -pyyntöjä.
Esimerkki: ActionNameAttribute määrittelee toiminnon todellisen toiminnon nimen, ja käyttö on seuraava
[ActionName()]
public ActionResult Index()
Esimerkki: HiddenInputAttribute-luokka, joka edustaa ominaisuutta, joka kertoo, tulisiko ominaisuusarvo tai kentän arvo renderöidä piilotettuna syöteelementtinä |