ModelMetaData to ważne pojęcie w MVC, obejmujące między innymi typ modelu, jakie atrybuty zawiera model, jakie typy atrybutów są obecne oraz jakie cechy znajdują się na tych atrybutach.
ASP.NET MVC3.0 dostarcza domyślne metadane modelu, DataAnnotationsModelMetadata dziedziczą z ModelMetadata (dodatkowo system dostarcza domyślnemu dostawcy metadanych modelu DataAnnotationsModelMetadataProvider)
Klasa publiczna DataAnnotationsModelMetadata : ModelMetadata
Jego konstruktor jest następujący
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Klasa DataAnnotationsModelMetadata posiada kilka powszechnie używanych właściwości
Nazwa wyświetlana DisplayName, ciąg formatowy DisplayFormatString
TemplateHint otrzymuje wartość, aby wybrać szablon
Dla DisplayName metoda LabelFor<TModel, TValue> wykorzystuje tę właściwość do generowania tekstu etykiety. To znaczyGdy właściwość DispalyName zostanie zdefiniowana w naszym modelu, użyj metody html.editForModel() w widokuAutomatycznie wyświetli etykietę "<etykieta za="nazwa użytkownika" > nazwę </ dla tego atrybutu</label> modelu.
[display( name="name",order=2)] //order attribute zmienia kolejność strony html public string username { get; set; }
Kod źródłowy HTML:
Właściwość Display używana w atributie nazwy użytkownika to klasa System.ComponentModel.DataAnnotations.DisplayAtribut, która oferuje ogólną funkcję pozwalającą na określenie lokalizowalnych ciągów znaków dla typu i członka klasy podziału encji
Są też funkcje z System.Web.MVC i System.ComponentModel.DataAnnotations, których nazwy to wszystkie klasy cech podobne do XXXXAttribute, z których każda ma określone zakresy użycia, niektóre ograniczają właściwości modelu, niektóre ograniczają Contrller, niektóre Actions itd.
Poniżej znajduje się lista wbudowanych i powszechnie używanych klas cech w tych dwóch przestrzeniach nazw
1) Przestrzeń System.Web.MVC
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute reprezentuje podstawową klasę wszystkich właściwości filtrów akcji
Klasa HttpDeleteAttribute reprezentuje właściwość używaną do ograniczenia metody działania, tak aby metoda obsługiwała tylko żądania HTTP DELETE
HttpGetAttribute, atrybut HttpPostAtribut, który ogranicza metodę operacyjną do przetwarzania wyłącznie żądań PUT
HttpPutAttribute reprezentuje właściwość, która ogranicza metodę działania tak, aby obsługiwała tylko żądania HTTP PUT.
Przykład: ActionNameAttribute określa rzeczywistą nazwę akcji i jej użycie jest następujące
[ActionName()]
publiczny Indeks ActionResult()
Przykład: klasa HiddenInputAttribute (Skryta Atrybut), która reprezentuje właściwość wskazującą, czy wartość właściwości lub pola powinna być renderowana jako ukryty element wejściowy |