Basit Doğrulama Gerçekleştirme (VB)

tarafından Stephen Walther

ASP.NET MVC uygulamasında doğrulama gerçekleştirmeyi öğrenin. Bu öğreticide Stephen Walther size model durumunu ve doğrulama HTML yardımcılarını tanıtır.

Bu öğreticinin amacı, bir ASP.NET MVC uygulamasında doğrulamayı nasıl gerçekleştirebileceğinizi açıklamaktır. Örneğin, birinin gerekli bir alan için değer içermeyen bir form göndermesini engellemeyi öğrenirsiniz. Model durumunu ve doğrulama HTML yardımcılarını kullanmayı öğrenirsiniz.

Model Durumunu Anlama

Doğrulama hatalarını göstermek için model durumunu (veya daha doğru bir şekilde model durumu sözlüğü) kullanırsınız. Örneğin, Liste 1'deki Create() eylemi, Product sınıfını veritabanına eklemeden önce Product sınıfının özelliklerini doğrular.

Doğrulama veya veritabanı mantığınızı bir denetleyiciye eklemenizi önermiyorum. Denetleyici yalnızca uygulama akışı denetimiyle ilgili mantık içermelidir. İşleri basit tutmak için bir kısayol kullanıyoruz.

Liste 1 - Controllers\ProductController.vb

'
' POST: /Product/Create

<AcceptVerbs(HttpVerbs.Post)> _
Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult
    ' Validation logic
    If productToCreate.Name.Trim().Length = 0 Then
    ModelState.AddModelError("Name", "Name is required.")
    End If
    If productToCreate.Description.Trim().Length = 0 Then
    ModelState.AddModelError("Description", "Description is required.")
    End If
    If productToCreate.UnitsInStock

Liste 1'de, Product sınıfının Name, Description ve UnitsInStock özellikleri doğrulanır. Bu özelliklerden herhangi biri doğrulama testinde başarısız olursa model durumu sözlüğüne bir hata eklenir (Denetleyici sınıfının ModelState özelliğiyle gösterilir).

Model durumunda herhangi bir hata varsa, ModelState.IsValid özelliği false döndürür. Bu durumda, yeni ürün oluşturmaya yönelik HTML formu yeniden görüntülenir. Aksi takdirde doğrulama hatası yoksa yeni Ürün veritabanına eklenir.

Doğrulama Yardımcılarını Kullanma

ASP.NET MVC çerçevesi iki doğrulama yardımcısı içerir: Html.ValidationMessage() yardımcısı ve Html.ValidationSummary() yardımcısı. Doğrulama hata iletilerini görüntülemek için bu iki yardımcıyı bir görünümde kullanırsınız.

Html.ValidationMessage() ve Html.ValidationSummary() yardımcıları, ASP.NET MVC yapı iskelesi tarafından otomatik olarak oluşturulan Oluşturma ve Düzenleme görünümlerinde kullanılır. Oluştur görünümünü oluşturmak için şu adımları izleyin:

  1. Ürün denetleyicisinde Create() eylemine sağ tıklayın ve Görünüm Ekle menü seçeneğini belirleyin (bkz. Şekil 1).
  2. Görünüm Ekle iletişim kutusunda, Kesin olarak belirlenmiş görünüm oluşturma etiketli onay kutusunu işaretleyin (bkz. Şekil 2).
  3. Veri sınıfını görüntüle açılan listesinden Product sınıfını seçin.
  4. İçeriği görüntüle açılan listesinde Oluştur'u seçin.
  5. Ekle düğmesine tıklayın.

Görünüm eklemeden önce uygulamanızı derlediğinizden emin olun. Aksi takdirde, sınıf listesi Veri sınıfını görüntüle açılan listesinde görünmez.

Kod düzenleyicisinde, görünüm ekle menü öğesinin vurgulandığı sağ tıklama menüsünü gösteren Ürün Denetleyicisi nokta c s dosyasının ekran görüntüsü.

Şekil 01: Görünüm ekleme (Tam boyutlu resmi görüntülemek için tıklayın)

Kesin olarak belirlenmiş bir görünüm oluştur onay kutusunun doldurulduğunu gösteren Görünüm Ekle iletişim kutusunun ekran görüntüsü.

Şekil 02: Kesin olarak belirlenmiş bir görünüm oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu adımları tamamladıktan sonra, Liste 2'de Oluştur görünümüne ulaşabilirsiniz.

Liste 2 - Views\Product\Create.aspx

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of MvcApplication1.Product)" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<title>Create</title>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Create</h2>

    <%= Html.ValidationSummary() %>

    <% 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="Price">Price:</label>
                <%= Html.TextBox("Price") %>
                <%= Html.ValidationMessage("Price", "*") %>
            </p>
            <p>
                <label for="UnitsInStock">UnitsInStock:</label>
                <%= Html.TextBox("UnitsInStock") %>
                <%= Html.ValidationMessage("UnitsInStock", "*") %>
            </p>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>

    <% End Using %>

    <div>
        <%=Html.ActionLink("Back to List", "Index") %>
    </div>

</asp:Content>

Liste 2'de Html.ValidationSummary() yardımcısı HTML formunun hemen üstünde çağrılır. Bu yardımcı doğrulama hata iletilerinin listesini görüntülemek için kullanılır. Html.ValidationSummary() yardımcısı, hataları madde işaretli bir listede işler.

Html.ValidationMessage() yardımcısı, HTML form alanlarının her birinin yanında çağrılır. Bu yardımcı, form alanının hemen yanında bir hata iletisi görüntülemek için kullanılır. Listeleme 2 söz konusu olduğunda, Html.ValidationMessage() yardımcısı bir hata olduğunda bir yıldız işareti görüntüler.

Şekil 3'teki sayfa, form eksik alanlarla ve geçersiz değerlerle gönderildiğinde doğrulama yardımcıları tarafından işlenen hata iletilerini gösterir.

Geçersiz değerlerle dolu alanlardan kaynaklanan hata iletileri içeren Oluştur görünümünü gösteren Internet Explorer penceresinin ekran görüntüsü.

Şekil 03: Sorunlarla gönderilen Oluşturma görünümü (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Doğrulama hatası olduğunda HTML giriş alanlarının görünümünün de değiştirildiğine dikkat edin. Html.TextBox() yardımcısı, Html.TextBox() yardımcısı tarafından işlenen özelliğiyle ilişkili bir doğrulama hatası olduğunda class ="input-validation-error" özniteliğini işler.

Doğrulama hatalarının görünümünü denetlemek için kullanılan üç basamaklı stil sayfası sınıfı vardır:

  • input-validation-error - Html.TextBox() yardımcısı tarafından işlenen giriş> etiketine <uygulanır.
  • field-validation-error - Html.ValidationMessage() yardımcısı tarafından işlenen span> etiketine uygulanır<.
  • validation-summary-errors - Html.ValidationSummary() yardımcısı tarafından işlenen ul> etiketine uygulanır<.

İçerik klasöründe bulunan Site.css dosyasını değiştirerek bu basamaklı stil sayfası sınıflarını değiştirebilir ve bu nedenle doğrulama hatalarının görünümünü değiştirebilirsiniz.

Not

HtmlHelper sınıfı, doğrulamayla ilgili CSS sınıflarının adlarını almak için salt okunur statik özellikler içerir. Bu statik özellikler ValidationInputCssClassName, ValidationFieldCssClassName ve ValidationSummaryCssClassName olarak adlandırılır.

Doğrulamayı Önceden Doğrulama ve Son Bağlama Doğrulama

Ürün oluşturmak için HTML formunu gönderirseniz ve fiyat alanı için geçersiz bir değer girerseniz ve UnitsInStock alanı için değer girmezseniz, Şekil 4'te görüntülenen doğrulama iletilerini alırsınız. Bu doğrulama hata iletileri nereden geliyor?

Hisse Senedi alanlarındaki Fiyat ve Birimlerin doğrulama hatalarını işaretlediği Internet Explorer penceresinin ekran görüntüsü.

Şekil 04: Önceden Bağlama Doğrulama Hataları(Tam boyutlu görüntüyü görüntülemek için tıklayın)

Aslında iki tür doğrulama hata iletisi vardır: HTML form alanları bir sınıfa bağlanmadan önce oluşturulanlar ve form alanları sınıfa bağlandıktan sonra oluşturulanlar. Başka bir deyişle, önceden bağlama doğrulama hataları ve bağlama doğrulama hataları vardır.

Liste 1'deki Ürün denetleyicisi tarafından kullanıma sunulan Create() eylemi Product sınıfının bir örneğini kabul eder. Create yönteminin imzası şöyle görünür:

Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult

Oluştur formundaki HTML formu alanlarının değerleri productToCreate sınıfına model bağlayıcısı adı verilen bir değerle bağlıdır. Varsayılan model bağlayıcısı, form alanını form özelliğine bağlayamadığında otomatik olarak model durumuna bir hata iletisi ekler.

Varsayılan model bağlayıcısı, "apple" dizesini Product sınıfının Price özelliğine bağlayamaz. Ondalık özelliğine dize atayamazsınız. Bu nedenle, model bağlayıcısı model durumuna bir hata ekler.

Varsayılan model bağlayıcısı, Nothing değerini kabul etmeyen bir özelliğe Nothing değerini de atayamaz. Özellikle, model bağlayıcısı UnitsInStock özelliğine Nothing değerini atayamaz. Bir kez daha model bağlayıcısı vazgeçer ve model durumuna bir hata iletisi ekler.

Bu önceden bağlama hata iletilerinin görünümünü özelleştirmek istiyorsanız, bu iletiler için kaynak dizeleri oluşturmanız gerekir.

Özet

Bu öğreticinin amacı, ASP.NET MVC çerçevesindeki temel doğrulama mekaniğinin açıklanmasıydı. Model durumunu ve doğrulama HTML yardımcılarını kullanmayı öğrendiniz. Ayrıca ön bağlama ve son bağlama doğrulama arasındaki ayrımı da ele aldık. Diğer öğreticilerde doğrulama kodunuzu denetleyicilerinizden ve model sınıflarınıza taşımaya yönelik çeşitli stratejileri ele alacağız.