ModelMetaData е важна концепция в MVC, включително, но не само, типа модел, какви атрибути съдържа моделът, какви видове атрибути има и какви характеристики са върху атрибутите.
ASP.NET MVC3.0 предоставя стандартните метаданни на модела, които DataAnnotationsModelMetadata наследява от ModelMetadata (освен това системата предоставя стандартния доставчик на метаданни за модела DataAnnotationsModelMetadataProvider)
публичен клас DataAnnotationsModelMetadata : ModelMetadata
Неговият конструктор е следният
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Класът DataAnnotationsModelMetadata има няколко често използвани свойства
DisplayName display name, DisplayFormatString format string
TemplateHint получава стойност, за да избере кой шаблон да използва
За DisplayName методът LabelFor<TModel, TValue> използва това свойство за генериране на текста на етикета. ОзначаваСлед като свойството DispalyName е дефинирано в нашия модел, използвайте метода html.editForModel() в видимостАвтоматично ще се покаже етикетния таг " <label for="username" > име </ за този атрибут</label> на модела.
[display( name="name", order=2)] //order атрибутът променя реда на html страницата Public string username { get; декорация; }
HTML изходен код:
Свойството Display, използвано в атрибута на потребителското име, е класът System.ComponentModel.DataAnnotations.DisplayAttribute, който предоставя обща функция, позволяваща да се задават локализиращи низове за типа и члена на класа за разделяне на обекти
Има и функции от System.Web.MVC и System.ComponentModel.DataAnnotations, чиито имена са класове характеристики, подобни на XXXXAttribute, всички с специфични обхвати на употреба, някои ограничават свойствата на модела, други ограничават Contrller, някои ограничават действията и др.
Следва списък с вградени и често използвани класове на характеристики в тези две пространства от имена
1) System.Web.MVC пространство
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute представлява базовия клас на всички свойства на action-filter
Клас HttpDeleteAttribute, който представлява свойство, използвано за ограничаване на оперативния метод така, че методът да обработва само HTTP DELETE заявки
HttpGetAttribute, атрибут HttpPostAttribute, който ограничава оперативния метод само да обработва PUT заявки
HttpPutAttribute представлява свойство, което се използва за ограничаване на оперативния метод така, че методът да обработва само HTTP PUT заявки.
Пример: ActionNameAttribute определя действителното име на действието, а употребата е следната
[ДействиеИме()]
публичен Индекс на резултати от действия()
Пример: Класът HiddenInputAttribute, който представлява свойство, което показва дали стойност на свойство или поле трябва да се рендерира като скрит входен елемент |