ModelMetaData adalah konsep penting dalam MVC, termasuk namun tidak terbatas pada jenis model, atribut apa yang dikandung model, jenis atribut apa yang ada, dan karakteristik apa yang ada pada atribut.
ASP.NET MVC3.0 menyediakan metadata model default DataAnnotationsModelMetadata yang diwarisi dari ModelMetadata (selain itu, sistem menyediakan penyedia metadata model default DataAnnotationsModelMetadataProvider)
class publik DataAnnotationsModelMetadata : ModelMetadata
Konstruktornya adalah sebagai berikut
publik DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, jenis containerType, Func modelAccessor, Jenis modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Kelas DataAnnotationsModelMetadata memiliki beberapa properti yang umum digunakan
Nama tampilan DisplayName, string format DisplayFormatString
TemplateHint mendapatkan nilai untuk memilih templat mana yang akan digunakan
Untuk DisplayName, metode LabelFor<TModel, TValue> menggunakan properti ini untuk menghasilkan teks label. ArtinyaSetelah properti DispalyName ditentukan pada model kita, gunakan metode html.editForModel() dalam tampilanIni akan secara otomatis menampilkan tag label " <label for="username" > nama </ untuk atribut model ini</label>.
[display( name="name",order=2)] //order mengubah urutan halaman html nama pengguna string publik { get; menetapkan; }
Kode sumber HTML:
Properti Tampilan yang digunakan pada atribut nama pengguna adalah kelas System.ComponentModel.DataAnnotations.DisplayAttribute, yang menyediakan fitur generik yang memungkinkan Anda menentukan string yang dapat dilokalkan untuk jenis dan anggota kelas divisi entitas
Ada juga fitur dari System.Web.MVC dan System.ComponentModel.DataAnnotations, yang namanya semuanya adalah kelas fitur yang mirip dengan XXXXAttribute, yang semuanya memiliki cakupan penggunaan tertentu, beberapa membatasi properti model, beberapa membatasi Contrller, beberapa membatasi Tindakan, dll.
Berikut ini adalah daftar kelas fitur bawaan dan umum digunakan di dua namespace ini
1) Ruang System.Web.MVC
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
Atribut HiddenInputAttribute
ActionFilterAttribute mewakili kelas dasar dari semua properti action-filter
HttpDeleteAttribute, yang mewakili properti yang digunakan untuk membatasi metode operasi sehingga metode hanya menangani permintaan HTTP DELETE
HttpGetAttribute, atribut HttpPostAttribute yang membatasi metode operasi untuk hanya memproses permintaan PUT
HttpPutAttribute mewakili properti yang digunakan untuk membatasi metode operasi sehingga metode hanya menangani permintaan HTTP PUT.
Contoh: ActionNameAttribute menentukan nama tindakan tindakan yang sebenarnya, dan penggunaannya adalah sebagai berikut
[NamaTindakan()]
publik ActionResult Index()
Contoh: Kelas HiddenInputAttribute, yang mewakili properti yang menunjukkan apakah nilai properti atau nilai bidang harus dirender sebagai elemen input tersembunyi |