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 " <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 представляє базовий клас усіх властивостей дії-фільтра
Клас HttpDeleteAttribute, який представляє властивість, що використовується для обмеження операційного методу так, щоб метод обробляв лише запити HTTP DELETE
HttpGetAttribute — атрибут HttpPostAttribute, який обмежує операційний метод обробкою лише PUT запитів
HttpPutAttribute — це властивість, яка використовується для обмеження операційного методу так, щоб метод обробляв лише HTTP PUT запити.
Приклад: ActionNameAttribute вказує фактичну назву дії дії, і її використання таке
[ActionName()]
Публічний індекс результатів дій()
Приклад: клас HiddenInputAttribute, який позначає властивість, що вказує, чи слід відображати значення властивості або поле як прихований вхідний елемент |