ModelMetaData, MVC'de önemli bir kavramdır; model türü, modelin hangi özellikler içerdiği, hangi tür nitelikler ve niteliklerde hangi özellikler olduğu dahil ancak bunlarla sınırlı olmamak üzere önemlidir.
ASP.NET MVC3.0, varsayılan model metaverisini sağlar DataAnnotationsModelMetadata, ModelMetadata'dan miras alır (ayrıca sistem, varsayılan model metaveri sağlayıcısı DataAnnotationsModelMetadataProvider'i sağlar)
public class DataAnnotationsModelMetadata : ModelMetadata
Yapıcısı şöyledir
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadata sınıfının yaygın olarak kullanılan birkaç özelliği vardır
DisplayName gösterim adı, DisplayFormatString format dizisi
TemplateHint, hangi şablonu kullanacağını seçmek için bir değer alır
DisplayName için, LabelFor<TModel, TValue> yöntemi bu özelliği etiket metni oluşturmak için kullanır. DemekDispalyName özelliği modelimizde tanımlandıktan sonra, görünüşte html.editForModel() yöntemini kullanınBu modelin bu özniteliği için otomatik olarak "<label for="username" > name </ etiketi gösterilir</label>.
[display( name="name",order=2)] //order özniteliği html sayfasının sırasını değiştirir public string username { get; set; }
HTML kaynak kodu:
Kullanıcı adı özniteliğinde kullanılan Display özelliği, System.ComponentModel.DataAnnotations.DisplayAttribute sınıfıdır; bu sınıf, varlık bölme sınıfının türü ve üyesi için yerelleştirilebilir dizileri belirtmenize olanak tanıyan genel bir özellik sunar
Ayrıca System.Web.MVC ve System.ComponentModel.DataAnnotations gibi özellikler de vardır; bunların isimleri XXXXAttribute'a benzer özellik sınıflarıdır ve hepsinin belirli kullanım alanları vardır, bazıları model özelliklerini kısıtlar, bazıları Contrller'ı kısıtlar, bazıları Eylemleri kısıtlar vb.
Aşağıda, bu iki isim alanında yerleşik ve yaygın olarak kullanılan özellik sınıflarının bir listesi yer almaktadır
1) System.Web.MVC alanı
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute, tüm eylem filtresi özelliklerinin temel sınıfını temsil eder
HttpDeleteAttribute sınıfı, işlem yöntemini kısıtlamak için kullanılan bir özelliği temsil eder; böylece yöntem yalnızca HTTP DELETE isteklerini işlerken
HttpGetAttribute, işlem yöntemini yalnızca PUT isteklerini işleyecek şekilde sınırlayan bir HttpPostAttribute özniteliğidir
HttpPutAttribute, işlem yöntemini kısıtlamak için kullanılan bir özelliği temsil eder; böylece yöntem yalnızca HTTP PUT isteklerini işliyor.
Örnek: ActionNameAttribute, eylemin gerçek eylem adını belirtir ve kullanım şekli şöyledir
[EylemName()]
public ActionResult Index()
Örnek: HiddenInputAttribute sınıfı, bir özellik değerinin veya alan değerinin gizli giriş öğesi olarak mı işlenilmesi gerektiğini gösteren bir özelliği temsil eder |