Veri Ek Açıklama Doğrulayıcıları ile Doğrulama (VB)
Microsoft tarafından
ASP.NET MVC uygulamasında doğrulama gerçekleştirmek için Veri Ek Açıklama Modeli Bağlayıcısı'nın avantajlarından yararlanın. Microsoft Entity Framework'te farklı türde doğrulayıcı öznitelikleri kullanmayı ve bunlarla çalışmayı öğrenin.
Bu öğreticide, ASP.NET MVC uygulamasında doğrulama gerçekleştirmek için Veri Ek Açıklaması doğrulayıcılarını kullanmayı öğreneceksiniz. Veri Ek Açıklaması doğrulayıcılarını kullanmanın avantajı, bir sınıf özelliğine yalnızca Required veya StringLength özniteliği gibi bir veya daha fazla öznitelik ekleyerek doğrulama gerçekleştirmenizi sağlamasıdır.
Veri Ek Açıklamaları Model Bağlayıcısı'nın Microsoft ASP.NET MVC çerçevesinin resmi bir parçası olmadığını anlamak önemlidir. Veri Ek Açıklamaları Model Bağlayıcısı Microsoft ASP.NET MVC ekibi tarafından oluşturulmuş olsa da, Microsoft bu öğreticide açıklanan ve kullanılan Veri Ek Açıklamaları Model Bağlayıcısı için resmi ürün desteği sunmaz.
Veri Ek Açıklama Modeli Bağlayıcısını Kullanma
Bir ASP.NET MVC uygulamasında Veri Ek Açıklamaları Model Bağlayıcısı'nı kullanmak için önce Microsoft.Web.Mvc.DataAnnotations.dll derlemesine ve System.ComponentModel.DataAnnotations.dll derlemesine bir başvuru eklemeniz gerekir. Proje, Başvuru Ekle menü seçeneğini belirleyin. Ardından Gözat sekmesine tıklayın ve Veri Ek Açıklamaları Model Bağlayıcısı örneğini indirdiğiniz (ve sıkıştırmasını kaldırdığınız) konuma göz atın (bkz . Şekil 1).
Şekil 1: Veri Ek Açıklamaları Model Bağlayıcısı'na başvuru ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Hem Microsoft.Web.Mvc.DataAnnotations.dll derlemesini hem de System.ComponentModel.DataAnnotations.dll derlemesini seçin ve Tamam düğmesine tıklayın.
.NET Framework Service Pack 1'de bulunan System.ComponentModel.DataAnnotations.dll derlemesini Veri Ek Açıklamaları Model Bağlayıcısı ile kullanamazsınız. Veri Ek Açıklamaları Model Bağlayıcı Örneği indirmesine dahil edilen System.ComponentModel.DataAnnotations.dll derlemesinin sürümünü kullanmanız gerekir.
Son olarak, DataAnnotations Model Binder'ı Global.asax dosyasına kaydetmeniz gerekir. Application_Start() yönteminin aşağıdaki gibi görünmesi için Application_Start() olay işleyicisine aşağıdaki kod satırını ekleyin:
Protected Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
ModelBinders.Binders.DefaultBinder = New Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder()
End Sub
Bu kod satırı DataAnnotationsModelBinder'ı ASP.NET MVC uygulamasının tamamı için varsayılan model bağlayıcısı olarak kaydeder.
Veri Ek Açıklaması Doğrulayıcı Özniteliklerini Kullanma
Veri Ek Açıklamaları Model Bağlayıcısı'nı kullandığınızda doğrulama gerçekleştirmek için doğrulayıcı özniteliklerini kullanırsınız. System.ComponentModel.DataAnnotations ad alanı aşağıdaki doğrulayıcı özniteliklerini içerir:
- Range: Bir özelliğin değerinin belirtilen değer aralığı arasında olup olmadığını doğrulamanızı sağlar.
- RegularExpression : Bir özelliğin değerinin belirtilen normal ifade deseni ile eşleşip eşleşmediğini doğrulamanızı sağlar.
- Gerekli – Bir özelliği gerektiği gibi işaretlemenizi sağlar.
- StringLength : Bir dize özelliği için maksimum uzunluk belirtmenizi sağlar.
- Validation: Tüm doğrulayıcı öznitelikleri için temel sınıf.
Not
Doğrulama gereksinimleriniz standart doğrulayıcılardan herhangi biri tarafından karşılanmıyorsa, her zaman temel Doğrulama özniteliğinden yeni bir doğrulayıcı özniteliğini devralarak özel bir doğrulayıcı özniteliği oluşturma seçeneğiniz vardır.
Liste 1'deki Product sınıfı, bu doğrulayıcı özniteliklerinin nasıl kullanılacağını gösterir. Name, Description ve UnitPrice özellikleri gerekli olarak işaretlenir. Name özelliğinin 10 karakterden kısa bir dize uzunluğu olmalıdır. Son olarak, UnitPrice özelliğinin bir para birimi tutarını temsil eden normal ifade deseni ile eşleşmesi gerekir.
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
Liste 1: Models\Product.vb
Product sınıfı, bir ek özniteliğin nasıl kullanılacağını gösterir: DisplayName özniteliği. DisplayName özniteliği, özellik bir hata iletisinde görüntülendiğinde özelliğin adını değiştirmenize olanak tanır. "UnitPrice alanı gerekli" hata iletisini görüntülemek yerine "Fiyat alanı gerekli" hata iletisini görüntüleyebilirsiniz.
Not
Bir doğrulayıcı tarafından görüntülenen hata iletisini tamamen özelleştirmek istiyorsanız, doğrulayıcının ErrorMessage özelliğine aşağıdaki gibi özel bir hata iletisi atayabilirsiniz: <Required(ErrorMessage:="This field needs a value!")>
Liste 1'deki Product sınıfını , Liste2'deki Create() denetleyici eylemiyle kullanabilirsiniz. Bu denetleyici eylemi, model durumu herhangi bir hata içerdiğinde Oluştur görünümünü yeniden görüntüler.
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
Liste 2: Controllers\ProductController.vb
Son olarak, Create() eylemine sağ tıklayıp Görünüm Ekle menü seçeneğini belirleyerek Liste 3'te görünümü oluşturabilirsiniz. Model sınıfı olarak Product sınıfıyla kesin olarak belirlenmiş bir görünüm oluşturun. görünüm içeriği açılan listesinden Oluştur'u seçin (bkz . Şekil 2).
Şekil 2: Oluşturma Görünümü Ekleme
<%@ 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>
Liste 3: Views\Product\Create.aspx
Not
Görünüm Ekle menü seçeneği tarafından oluşturulan Oluştur formundan Kimlik alanını kaldırın. Kimlik alanı bir Kimlik sütununa karşılık geldiği için, kullanıcıların bu alan için bir değer girmesine izin vermek istemezsiniz.
Ürün oluşturmak için formu gönderirseniz ve gerekli alanlar için değer girmezseniz, Şekil 3'teki doğrulama hata iletileri görüntülenir.
Şekil 3: Gerekli alanlar eksik
Geçersiz bir para birimi tutarı girerseniz, Şekil 4'teki hata iletisi görüntülenir.
Şekil 4: Geçersiz para birimi tutarı
Entity Framework ile Veri Ek Açıklaması Doğrulayıcıları Kullanma
Veri modeli sınıflarınızı oluşturmak için Microsoft Entity Framework kullanıyorsanız, doğrulayıcı özniteliklerini doğrudan sınıflarınıza uygulayamazsınız. Entity Framework Tasarım Aracı model sınıflarını oluşturduğundan, Tasarım Aracı bir sonraki değişikliğinizde model sınıflarında yaptığınız tüm değişikliklerin üzerine yazılır.
Entity Framework tarafından oluşturulan sınıflarla doğrulayıcıları kullanmak istiyorsanız meta veri sınıfları oluşturmanız gerekir. Doğrulayıcıları gerçek sınıfa uygulamak yerine meta veri sınıfına doğrulayıcıları uygularsınız.
Örneğin, Entity Framework kullanarak bir Movie sınıfı oluşturduğunuzu düşünün (bkz . Şekil 5). Ayrıca, Film Başlığı ve Yönetmen özelliklerini gerekli özellikler haline getirmek istediğinizi de düşünün. Bu durumda , Liste 4'te kısmi sınıf ve meta veri sınıfı oluşturabilirsiniz.
Şekil 5: Entity Framework tarafından oluşturulan film sınıfı
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
Liste 4: Models\Movie.vb
Listeleme 4'teki dosya Movie ve MovieMetaData adlı iki sınıf içerir. Movie sınıfı kısmi bir sınıftır. DataModel içinde yer alan Entity Framework tarafından oluşturulan kısmi sınıfa karşılık gelir. Tasarım Aracı.vb dosyası.
Şu anda .NET framework kısmi özellikleri desteklememektedir. Bu nedenle, doğrulayıcı özniteliklerini DataModel'de tanımlanan Movie sınıfının özelliklerine uygulamanın hiçbir yolu yoktur. Liste 4'teki dosyada tanımlanan Movie sınıfının özelliklerine doğrulayıcı özniteliklerini uygulayarak Tasarım Aracı.vb dosyası.
Movie kısmi sınıfının MovieMetaData sınıfını işaret eden bir MetadataType özniteliğiyle donatıldığını unutmayın. MovieMetaData sınıfı, Movie sınıfının özellikleri için proxy özellikleri içerir.
Doğrulayıcı öznitelikleri MovieMetaData sınıfının özelliklerine uygulanır. Title, Director ve DateReleased özelliklerinin tümü gerekli özellikler olarak işaretlenir. Director özelliğine 5'ten az karakter içeren bir dize atanmalıdır. Son olarak, DisplayName özniteliği DateReleased özelliğine uygulanır ve "DateReleased alanı gereklidir" hatası yerine "Yayımlanan Tarih alanı gereklidir" gibi bir hata iletisi görüntülenir.
Not
MovieMetaData sınıfındaki proxy özelliklerinin Movie sınıfındaki ilgili özelliklerle aynı türleri temsil etmek zorunda olmadığını fark edin. Örneğin, Director özelliği Movie sınıfındaki bir dize özelliği ve MovieMetaData sınıfındaki bir nesne özelliğidir.
Şekil 6'daki sayfa, Film özellikleri için geçersiz değerler girdiğinizde döndürülen hata iletilerini gösterir.
Şekil 6: Entity Framework ile doğrulayıcıları kullanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Özet
Bu öğreticide, bir ASP.NET MVC uygulamasında doğrulama gerçekleştirmek için Veri Ek Açıklama Modeli Bağlayıcısı'nın avantajlarından nasıl yararlanabileceğinizi öğrendiniz. Required ve StringLength öznitelikleri gibi farklı türde doğrulayıcı öznitelikleri kullanmayı öğrendinsiniz. Ayrıca Microsoft Entity Framework ile çalışırken bu özniteliklerin nasıl kullanılacağını da öğrendinsiniz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin