ModelMetaData — важная концепция в MVC, включая, но не ограничиваясь, типом модели, атрибутами, которые она содержит, типами атрибутов и характеристиками атрибутов.
ASP.NET MVC3.0 предоставляет стандартные метаданные модели, которые DataAnnotationsModelMetadata унаследовывает от ModelMetadata (кроме того, система предоставляет стандартный поставщик метаданных модели DataAnnotationsModelMetadataProvider)
public class DataAnnotationsModelMetadata : ModelMetadata
Его конструктор следующий
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Класс DataAnnotationsModelMetadata обладает несколькими часто используемыми свойствами
DisplayName display name, строка формата DisplayFormatString
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-фильтра
Класс HttpDeleteAttribute, который представляет собой свойство, используемое для ограничения метода операции так, чтобы метод обрабатывал только запросы HTTP DELETE
HttpGetAttribute — атрибут HttpPostAttribute, который ограничивает метод операции только обработкой запросов PUT
HttpPutAttribute представляет собой свойство, используемое для ограничения метода операций так, чтобы он обрабатывал только запросы HTTP PUT.
Пример: ActionNameAttribute указывает фактическое имя действия действия, и его использование следующее
[ActionName()]
публичный индекс результатов действий()
Пример: класс HiddenInputAttribute, который представляет свойство, указывающее, должно ли значение свойства или поле отображаться как скрытый входный элемент |