A ModelMetaData fontos fogalom az MVC-ben, beleértve a modell típusát, a modell attribútumait, milyen attribútumokat tartalmaz, milyen attribútumtípusokat tartalmaznak, és milyen jellemzők vannak az attribútumokon.
ASP.NET MVC3.0 biztosítja az alapértelmezett modellmetaadatot, amelyet DataAnnotationsModelMetadata örököl a ModelMetadata-tól (ezen felül a rendszer biztosítja az alapértelmezett modellmetaadat-szolgáltatót, a DataAnnotationsModelMetadataProvider-t)
public class DataAnnotationsModelMetadata : ModelMetadata
A konstruktorja a következő
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
A DataAnnotationsModelMetadata osztálynak több gyakran használt tulajdonsága van
DisplayName megjelenítési neve, DisplayFormatString formátum string
A TemplateHint kap egy értéket, amellyel kiválaszthatja, melyik sablont használja
DisplayName esetén a LabelFor<TModel, TValue> módszer ezt a tulajdonságot használja a címke szöveg generálásához. Ez azt jelenti, hogyMiután a DispalyName tulajdonság definiálva van a modellünkön, használjuk a html.editForModel() metóduszt a megjelenítésbenAutomatikusan megjeleníti a "<label for="username" > név </ címet ehhez a modell attribútumjához</label>.
[display( name="name",order=2)] //order attribútum megváltoztatja a html oldal sorrendjét public string username { get; Szett; }
HTML forráskód:
A felhasználónév attribútumban használt Display tulajdonság a System.ComponentModel.DataAnnotations.DisplayAttribute osztály, amely egy általános funkciót biztosít, amely lehetővé teszi a lokalizálható stringek megadását az entitás osztály típusához és tagjához
Vannak olyan funkciók is, amelyek a System.Web.MVC és a System.ComponentModel.DataAnnotations oldalakról szólnak, amelyek neve mind hasonló tulajdonságosztályok, amelyek a XXXXAttribute-hoz hasonlóak, mindegyiknek meghatározott felhasználási területe van: néhány korlátozó modell tulajdonságot, néhány korlátozó modell tulajdonságot, néhány korlátozó műveletet, stb.
Az alábbiakban felsoroljuk a beépített és leggyakrabban használt funkcióosztályokat ebben a két névtérben
1) System.Web.MVC tér
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
Az ActionFilterAttribute az összes akciószűrő tulajdonság alaposztályát képviseli
HttpDeleteAttribute osztály, amely egy olyan tulajdonságot képvisel, amelyet a műveleti metódus korlátozására használnak, hogy a metódus csak HTTP DELETE kéréseket kezeljen
A HttpGetAttribute, egy HttpPostAttribute attribútum, amely korlátozza az üzemeltetési módszert kizárólag PUT kérések feldolgozására
A HttpPutAttribute egy olyan tulajdonságot képvisel, amelyet az operációs metódus korlátozására használnak, hogy a metódus csak HTTP PUT kéréseket kezeljen.
Példa: Az ActionNameAttribute megadja az akció tényleges műveletnevét, és a használat a következő:
[ActionName()]
public ActionResult Index()
Példa: A HiddenInputAttribute osztály, amely egy olyan tulajdonságot képvisel, amely jelzi, hogy egy tulajdonság értéket vagy mezőértéket rejtett bemeneti elemként kell megjeleníteni. |