Sayfalar

27 Mayıs 2013 Pazartesi

ASP.NET MVC DERSLERİ ( 6.6 ) DATAANNOTATIONS Remote ve Compare

System.Web.Mvc namespace içerisinde iki tane doğrulama niteliği (validation attributes) vardır. Bunlar Remote ve Compare nitelikleridir.

Remote

Bu nitelik, sunucu taraflı bir çağrı ile istemci taraflı bir doğrulama yapmak amacıyla kullanılır. Yani; örneğin, KullaniciAdi var mı yok mu diye, kontrol etmek için veritabanına gitmek gerekli. Bunu yaparken ise istemci taraflı bir doğrulama yapmak için bu niteliği kullanabiliriz. Örneğin kategori ismi için, aynı kategoriyi tekrar girilmesini istemiyorsak, kategori sınıfımızdaki Ad alanını Remote ekliyoruz;
[Remote("KategoriVarmi","Kategori","Admin", ErrorMessage = "Bu {0} zaten kayıtlı. Lütfen başka bir kategori giriniz.")]
[Required(ErrorMessage = "{0} alanı gereklidir.")]
[StringLength(50, ErrorMessage = "En fazla {1} karakter uzunluğunda olmalıdır.")]
[Display(Name = "Kategori")]
public string Ad { get; set; }

Daha sonra KategoriController sınıfına aşağıdaki metodu ekliyoruz.
public JsonResult KategoriVarmi(string kategoriAd)
{
    var result = kategoriServis.KategoriVarmi(kategoriAd);
    return Json(result, JsonRequestBehavior.AllowGet);
}

Kategori eğer sistemde varsa, sayfa yenilemesi olmadan bu karşılaştırma yapılarak, hata mesajı verecektir. Hata mesajı aşağıdaki gibidir.


Remote attribute içerisinde sırasıyla, action, controller ve area isimlerini belirttik.

Compare

Bu nitelik ile örneğin kullanıcı şifresini tekrar girmesini istedigimizde bu iki  şifre karşılaştırılır. Örnek kullanımı;
public string Sifre { get; set; }
 
[Compare("Sifre")]
public string SifreTekrar { get; set; }

şeklinde bir tanımlama yaparsak, iki textbox içine girilen değerler otomatik olarak karşılaştırılır.

3 yorum:

  1. Remote attribute mvc'nin hangi sürümünde var hocam? ben 4 kullanıyorum dataannotations'ta bu attribute yok.

    YanıtlaSil
  2. Hocam remote çok kullanışlı fakat update işleminde remote attr bu update işlemini engelliyor ne yapmak gerekir , teşekkürler iyi çalışmalar

    YanıtlaSil