Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Microsoft
Manfaatkan Model Anotasi Data Binder untuk melakukan validasi dalam aplikasi MVC ASP.NET. Pelajari cara menggunakan berbagai jenis atribut validator dan bekerja dengannya di Microsoft Entity Framework.
Dalam tutorial ini, Anda mempelajari cara menggunakan validator Anotasi Data untuk melakukan validasi dalam aplikasi MVC ASP.NET. Keuntungan menggunakan validator Anotasi Data adalah memungkinkan Anda melakukan validasi hanya dengan menambahkan satu atau beberapa atribut – seperti atribut Wajib atau StringLength – ke properti kelas.
Penting untuk dipahami bahwa Model Anotasi Data Binder bukan bagian resmi dari kerangka kerja Microsoft ASP.NET MVC. Meskipun Model Anotasi Data Binder dibuat oleh tim Microsoft ASP.NET MVC, Microsoft tidak menawarkan dukungan produk resmi untuk Model Anotasi Data Binder dijelaskan dan digunakan dalam tutorial ini.
Menggunakan Model Anotasi Data Binder
Untuk menggunakan Model Anotasi Data Binder dalam aplikasi MVC ASP.NET, Anda harus terlebih dahulu menambahkan referensi ke rakitan Microsoft.Web.Mvc.DataAnnotations.dll dan perakitan System.ComponentModel.DataAnnotations.dll. Pilih opsi menu Proyek, Tambahkan Referensi. Selanjutnya klik tab Telusuri dan telusuri ke lokasi tempat Anda mengunduh (dan membuka zip) sampel Binder Model Anotasi Data (lihat Gambar 1).
Gambar 1: Menambahkan referensi ke model Anotasi Data Binder (Klik untuk melihat gambar ukuran penuh)
Pilih rakitan Microsoft.Web.Mvc.DataAnnotations.dll dan rakitan System.ComponentModel.DataAnnotations.dll dan klik tombol OK .
Anda tidak dapat menggunakan rakitan System.ComponentModel.DataAnnotations.dll yang disertakan dengan .NET Framework Paket Layanan 1 dengan Model Anotasi Data Binder. Anda harus menggunakan versi rakitan System.ComponentModel.DataAnnotations.dll yang disertakan dengan Model Anotasi Data Binder Unduhan sampel.
Terakhir, Anda perlu mendaftarkan Model DataAnnotations Binder dalam file Global.asax. Tambahkan baris kode berikut ke penanganan aktivitas Application_Start() sehingga metode Application_Start() terlihat seperti ini:
Protected Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
ModelBinders.Binders.DefaultBinder = New Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder()
End Sub
Baris kode ini mendaftarkan DataAnnotationsModelBinder sebagai pengikat model default untuk seluruh aplikasi MVC ASP.NET.
Menggunakan Atribut Validator Anotasi Data
Saat Anda menggunakan Model Anotasi Data Binder, Anda menggunakan atribut validator untuk melakukan validasi. Namespace Layanan System.ComponentModel.DataAnnotations menyertakan atribut validator berikut:
- Rentang – Memungkinkan Anda memvalidasi apakah nilai properti berada di antara rentang nilai yang ditentukan.
- RegularExpression – Memungkinkan Anda memvalidasi apakah nilai properti cocok dengan pola ekspresi reguler tertentu.
- Wajib – Memungkinkan Anda menandai properti sebagaimana diperlukan.
- StringLength – Memungkinkan Anda menentukan panjang maksimum untuk properti string.
- Validasi – Kelas dasar untuk semua atribut validator.
Catatan
Jika kebutuhan validasi Anda tidak dipenuhi oleh salah satu validator standar, Maka Anda selalu memiliki opsi untuk membuat atribut validator kustom dengan mewarisi atribut validator baru dari atribut Validasi dasar.
Kelas Produk di Daftar 1 menggambarkan cara menggunakan atribut validator ini. Properti Nama, Deskripsi, dan UnitPrice ditandai sebagaimana diperlukan. Properti Nama harus memiliki panjang string kurang dari 10 karakter. Terakhir, properti UnitPrice harus cocok dengan pola ekspresi reguler yang mewakili jumlah mata uang.
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
Public Class Product
Private _id As Integer
Private _name As String
Private _description As String
Private _unitPrice As Decimal
Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
_
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
_
Public Property Description() As String
Get
Return _description
End Get
Set(ByVal value As String)
_description = value
End Set
End Property
_
Public Property UnitPrice() As Decimal
Get
Return _unitPrice
End Get
Set(ByVal value As Decimal)
_unitPrice = value
End Set
End Property
End Class
Daftar 1: Models\Product.vb
Kelas Produk menggambarkan cara menggunakan satu atribut tambahan: atribut DisplayName. Atribut DisplayName memungkinkan Anda mengubah nama properti saat properti ditampilkan dalam pesan kesalahan. Alih-alih menampilkan pesan kesalahan "Bidang UnitPrice diperlukan" Anda dapat menampilkan pesan kesalahan "Bidang Harga diperlukan".
Catatan
Jika Anda ingin sepenuhnya menyesuaikan pesan kesalahan yang ditampilkan oleh validator maka Anda dapat menetapkan pesan kesalahan kustom ke properti ErrorMessage validator seperti ini: <Required(ErrorMessage:="This field needs a value!")>
Anda dapat menggunakan kelas Produk di Daftar 1 dengan tindakan Pengontrol Create() di Daftar 2. Tindakan pengontrol ini memutar ulang tampilan Buat saat status model berisi kesalahan apa pun.
Public Class ProductController
Inherits System.Web.Mvc.Controller
'
' GET: /Product/Create
Function Create() As ActionResult
Return View()
End Function
'
' POST: /Product/Create
_
Function Create( ByVal productToCreate As Product) As ActionResult
If Not ModelState.IsValid Then
Return View()
End If
Return RedirectToAction("Index")
End Function
End Class
Daftar 2: Controllers\ProductController.vb
Terakhir, Anda dapat membuat tampilan di Daftar 3 dengan mengklik kanan tindakan Create() dan memilih opsi menu Tambahkan Tampilan. Buat tampilan yang ditik dengan kuat dengan kelas Produk sebagai kelas model. Pilih Buat dari daftar dropdown lihat konten (lihat Gambar 2).
Gambar 2: Menambahkan Tampilan Buat
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of MvcApplication1.Product)" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% Using Html.BeginForm()%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Name">Name:</label>
<%= Html.TextBox("Name") %>
<%= Html.ValidationMessage("Name", "*") %>
</p>
<p>
<label for="Description">Description:</label>
<%= Html.TextBox("Description") %>
<%= Html.ValidationMessage("Description", "*") %>
</p>
<p>
<label for="UnitPrice">UnitPrice:</label>
<%= Html.TextBox("UnitPrice") %>
<%= Html.ValidationMessage("UnitPrice", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% End Using %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Daftar 3: Views\Product\Create.aspx
Catatan
Hapus bidang Id dari formulir Buat yang dihasilkan oleh opsi menu Tambahkan Tampilan . Karena bidang Id sesuai dengan kolom Identitas, Anda tidak ingin mengizinkan pengguna memasukkan nilai untuk bidang ini.
Jika Anda mengirimkan formulir untuk membuat Produk dan Anda tidak memasukkan nilai untuk bidang yang diperlukan, maka pesan kesalahan validasi di Gambar 3 ditampilkan.
Gambar 3: Bidang yang diperlukan tidak ada
Jika Anda memasukkan jumlah mata uang yang tidak valid, maka pesan kesalahan di Gambar 4 ditampilkan.
Gambar 4: Jumlah mata uang tidak valid
Menggunakan Validator Anotasi Data dengan Kerangka Kerja Entitas
Jika Anda menggunakan Microsoft Entity Framework untuk menghasilkan kelas model data, Anda tidak dapat menerapkan atribut validator langsung ke kelas Anda. Karena Entity Framework Designer menghasilkan kelas model, setiap perubahan yang Anda buat pada kelas model akan ditimpa saat berikutnya Anda membuat perubahan dalam Designer.
Jika Anda ingin menggunakan validator dengan kelas yang dihasilkan oleh Kerangka Kerja Entitas, Anda perlu membuat kelas data meta. Anda menerapkan validator ke kelas data meta alih-alih menerapkan validator ke kelas aktual.
Misalnya, bayangkan Anda telah membuat kelas Film menggunakan Kerangka Kerja Entitas (lihat Gambar 5). Bayangkan, selanjutnya, bahwa Anda ingin membuat properti Judul Film dan Direktori diperlukan properti. Dalam hal ini, Anda dapat membuat kelas parsial dan kelas data meta di Daftar 4.
Gambar 5: Kelas film yang dihasilkan oleh Entity Framework
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
_
Partial Public Class Movie
End Class
Public Class MovieMetaData
Private _title As Object
Private _director As Object
Private _dateReleased As Object
_
Public Property Title() As Object
Get
Return _title
End Get
Set(ByVal value As Object)
_title = value
End Set
End Property
_
Public Property Director() As Object
Get
Return _director
End Get
Set(ByVal value As Object)
_director = value
End Set
End Property
_
Public Property DateReleased() As Object
Get
Return _dateReleased
End Get
Set(ByVal value As Object)
_dateReleased = value
End Set
End Property
End Class
Daftar 4: Models\Movie.vb
File dalam Daftar 4 berisi dua kelas bernama Movie dan MovieMetaData. Kelas Film adalah kelas parsial. Ini sesuai dengan kelas parsial yang dihasilkan oleh Kerangka Kerja Entitas yang terkandung dalam DataModel. Designer.vb.
Saat ini, .NET framework tidak mendukung properti parsial. Oleh karena itu, tidak ada cara untuk menerapkan atribut validator ke properti kelas Film yang ditentukan dalam DataModel. Designer.vb dengan menerapkan atribut validator ke properti kelas Film yang ditentukan dalam file di Listing 4.
Perhatikan bahwa kelas Film parsial dihiasi dengan atribut MetadataType yang menunjuk di kelas MovieMetaData. Kelas MovieMetaData berisi properti proksi untuk properti kelas Film.
Atribut validator diterapkan ke properti kelas MovieMetaData. Properti Judul, Direktur, dan DateReleased semuanya ditandai sebagai properti yang diperlukan. Properti Direktur harus diberi string yang berisi kurang dari 5 karakter. Terakhir, atribut DisplayName diterapkan ke properti DateReleased untuk menampilkan pesan kesalahan seperti "Bidang Tanggal Dirilis diperlukan." alih-alih kesalahan "Bidang DateReleased diperlukan."
Catatan
Perhatikan bahwa properti proksi di kelas MovieMetaData tidak perlu mewakili jenis yang sama dengan properti yang sesuai di kelas Film. Misalnya, properti Direktur adalah properti string di kelas Film dan properti objek di kelas MovieMetaData.
Halaman di Gambar 6 mengilustrasikan pesan kesalahan yang dikembalikan saat Anda memasukkan nilai yang tidak valid untuk properti Film.
Gambar 6: Menggunakan validator dengan Kerangka Kerja Entitas (Klik untuk melihat gambar ukuran penuh)
Ringkasan
Dalam tutorial ini, Anda mempelajari cara memanfaatkan Model Anotasi Data Binder untuk melakukan validasi dalam aplikasi MVC ASP.NET. Anda mempelajari cara menggunakan berbagai jenis atribut validator seperti atribut Required dan StringLength. Anda juga mempelajari cara menggunakan atribut ini saat bekerja dengan Microsoft Entity Framework.