ekrem özer

her yerde olan şeyler.

MVC Model Validation

Merhaba arkadaşlar bu yazımda kısaca mvc'de model validation'ın kullanımından bahsedeceğim. Validation işlemi, veri girişlerinde girilecek verinin uygunluğunu kontrol etmemizi sağlar. Bu işlem iki türlü yapılabilir. Birincisi client tarafında JavaScript ile ikincisi ise server tarafında modelimizi oluştururken ekleyeceğimiz attribute’lardır. Yazımızda model validation yani sunucu taraflı kontrol anlatacağız. Modelimizi nesne olarak oluşturduktan sonra value’ların üzerine yazıyoruz. Attiribute’lar System.ComponentModel.DataAnnotations isimli namespace altında bulunur. Şimdi konuyla ilgili küçük bir örnek yapalım. Bu örneğimizde basit bir kullanıcı kayıt alanı oluşturuyorum ve bu alanları zorunlu yapıyorum. Önce Modelime Kullanici adında bir class ekliyorum ve class’ımdaki alanları giriyorum.

public class Kullanici
{
  [Required(ErrorMessage = "Kullanıcı Adı Boş Geçilemez")]
  public string KullaniciAdi { get; set; }
  [Required(ErrorMessage = "Şifre Boş Geçilemez")]
  public string Eposta { get; set; }
  [Required(ErrorMessage = "E-Posta Boş Geçilemez")]
  public string Sifre { get; set; }
}

Yukarıda görüldüğü gibi KullaniciAdi, Eposta ve Sifre adında üç tane alanım var ve bu alanların üstüne [Required] yazarak zorunlu olduğunu belirtiyorum yanına parantez içinde ErrorMessage yazıyorum bununlada bu alan boş geçilirse verilecek mesajı belirtiyorum. Burada dikkat etmemiz gereken noktalardan biriside validationları kullanmamız için Name Space’imize System.ComponentModel.DataAnnotations; eklememizdir. Classın name space’i aşağıdaki gibidir;

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

Class’ımızı oluşturduktan sonra Controllerime Kullanici isminde bir Controller ekliyorum. İçeriği aşağıdaki gibidir;

public class KullaniciController : Controller
{
  //
  // GET: /Kullanici/
 
  public ActionResult Index() //Sayfa İlk Açıldığında View'ı Döndürecek
  {
    return View();
  }
 
  [HttpPost] //Sayfa Post olduğunda yani kaydet butonuna bastığımızda bu Action çalışacak
  public ActionResult Index(Kullanici kul)
  {
    if (ModelState.IsValid)//Zorunlu alanları kontrol eden koşul
    {
      ViewBag.Islem = "Kayıt Başarılı";
    }
    return View();
  }
}

Ve son olarakta Controller’ıma view ekliyorum. Kodları aşağıdaki gibi;

@model ModelValidation.Models.Kullanici 
@*Class'ımı kullanmak için modelden çağırıyorum*@
 
<h2>Kullanıcı Kaydı - www.ekremozer.com</h2>
 
@using (Html.BeginForm("Index", "Kullanici"))//Sayfa post olduğunda gönderilecek form
{
    <table>
        <tr><td colspan="2" style="color: Red;">@Html.ValidationSummary()</td></tr>@*Bu kısımda Validationdan dönen mesajlar yazacak*@
        <tr><td>Kullanıcı Adı:</td><td>@Html.TextBoxFor(k => k.KullaniciAdi)</td></tr>
        <tr><td>Eposta:</td><td>@Html.TextBoxFor(k => k.Eposta)</td></tr>
        <tr><td>Şifre:</td><td>@Html.TextBoxFor(k => k.Sifre)</td></tr>
        <tr><td><input id="Submit1" type="submit" value="Kaydet" /></td><td></td></tr>
        <tr><td>Sonuç:</td><td>@ViewBag.Islem</td></tr>
    </table>
}

Alanları boş bırakıp kaydet butonuna bastığımda @Html.ValidationSummary() yazdığım kısımda hata mesajlarını göreceğiz. Alanları doldurduğumda ise @ViewBag.Islem yazdığım kısımda "Kayıt Başarılı" mesajı gelecektir. Örnek projeyi indirmek için tıklayınız. Bir sonraki yazıda görüşmek üzere, umarım faydalı olmuştur.