ASP.Net MVC Remote Validation

02 Ocak 2016 2 dk okuma süresi 192 okunma

Remote validation, yani uzaktan doğrulama MVC 3 ile gelen kullanışlı bir özellik. Kullanım amacı ilgili parametrenin veritanında var olup olmadığını kullanıcıya kolayca göstermek. Şöyleki; bir kullanıcı kayıt sayfanız var ve kullanıcı adı herkese özel yani unique. Remote attribute'u sayesinde kullanıcı inputu girdiğinde kontrol işlemi başlıyor ve veritabanında aynı kullanıcı adının olup olmadığını kontrol edip geriye bir mesaj dönüyor.

Bu özelliği kullanabilmek için jQuery ve jQuery validation kütüphanelerinin sayfaya eklenmiş olması gerekir. Aynı zamanda web.config üzerinde appSetting'te aşağıdaki gibi olmalıdır ve ilgili entity'nin de System.ComponentModel.DataAnnotations (Remote attribute'u için) namespace'ini kullanıyor olması gerekiyor.

// Bundle olarak eklemek isterseniz
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
<span class="redactor-invisible-space">
// sadece script dosyalarini kullanmak isterseniz</span>
<script src="~/Scripts/jquery-1.11.1.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>

<!-- web.config -->
<appSettings>
 <add key="ClientValidationEnabled" value="true"/>
 <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>


Remote attribute'unun kullanımı aşağıdaki gibidir. Bir kullanıcı kayıt formunuz olduğunu varsayın.

public class Kullanici
{
    [Required]
    [Remote("Kontrol", "Kullanici", ErrorMessage = "Bu kullanici adi baskasina ait.")]
    // "Kontrol" action methodu, "Kullanici" controller'ımızın adı, "ErrorMessage" eğer kullanıcı varsa gösterilecek hata mesajı (bunu controller tarafından da gönderebilirsiniz.)    
    public string KullaniciAdi { get; set; }
    
    [Required]
    [DataType(DataType.Password)]
    public string Sifre { get; set; }
}
@model Models.Kullanici 

@{
    ViewBag.Title = "Kayıt Formu";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Yeni Kullanici Kaydı</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

    @Html.TextBoxFor(x => x.KullaniciAdi)
<span class="redactor-invisible-space">    @Html.ValidationMessageFor(x => x.KullaniciAdi)
</span>
    @Html.TextBoxFor(x => x.Sifre)
<span class="redactor-invisible-space">    @Html.ValidationMessageFor(x => x.Sifre)
</span>
    <button type="submit" class="btn btn-primary">Gönder</button>
}
public ActionResult Kontrol(string kullanici_adi)
{
    var count = db.Kullanicilar
        .Count(x => x.KullaniciAdi.Equals(kullanici_adi));
 
    if (count == 0)
       return Json(true, JsonRequestBehavior.AllowGet);
    else
       return Json(false, JsonRequestBehavior.AllowGet);
}

Eğer action'dan false değeri gelirse form üzerinde uyarı/hata mesajı çıkar ve submit butonu çalışmaz.

Yazılarıma abone olmak ister misiniz?
Spam yapılmaz, sadece bildirim amaçlıdır. İstediğiniz zaman abonelikten çıkabilirsiniz.
İlginizi çekebilecek diğer yazılar.
Webapi "Get exception Method not found: 'System.Collections.ObjectModel.Collection`1 System.Web.Http.HttpConfiguration.get_MessageHandlers()'" sorunu nasıl giderilir?

Önceki sürümlerde projeye çift tıkladığımızda ağaç yapısı şeklinde kırılımları açarken VS2019 ile birlikte otomatik olarak proje dosyasını açıyor. Neyseki bu alışkanlığı devam ettirebilmek için seçenek koymuşlar.

Visual Studio'da son açık kalan dosyaların hangileri olduğunu hatırlamamasından kaynaklanan hata