4 Temmuz 2015 Cumartesi

MVC ile programlama tarafında tek alan için validation kontrolü

MVC projemizde bazen çalışmış olduğumuz class içerisinde 1'den fazla validation kontrolü olabilmekte ama arama gibi sayfalarda ihtiyaç duyulan genellikle tek alandır bizde bu makalemizde tek alan için yapılabilecek validation kontrolünü göreceğiz.
Alttaki örnek validation sınıfımızın olduğunu varsayalım.
01public class NewsValidation
02{
03    [Required]
04    [Display(Name = "Ad")]
05    public string Name { get; set; }
06    [Required]
07    [Display(Name = "Kategori")]
08    public int CatId { get; set; }
09    [Display(Name = "Onay Durumu")]
10    public bool Approve { get; set; }
11}
Örnek olarak arama sayfasında Name alanını kullanacağız fakat Model.IsValid doğrulaması yapıldığında CadId alanıda Required attribut'ü ile zorunlu tutulduğu için bu alan içinde giriş yapılması istenecek. bu durumu aşmak için alttaki gibi bir kod işinizi görecektir.
1[HttpPost]
2public ActionResult Search(Category cat)
3{
4    if (!ModelState.IsValidField("Name"))
5    {
6        return View(cat);
7    }
8    return RedirectToAction("Index");
9}
!ModelState.IsValidField("Name") kodu ile demek istediğimiz Name alanı eğer doğrulamayı geçmediyse bize gönderilen sonucu geri gönder kullanıcıya taki Name alanına doğrulamada belirtilen doğru değeri girene kadar.

ASP.NET MVC NonAction Attribute

(Public metotlara erişimi kısıtlamak)

NonAction özniteliği; ASP.NET MVC’de action olarak kullanmak istenmeyen, fakat controller sınıfları içinde kullanmak istenilen metotlar için kullanılan özniteliktir.
Projelerimiz için yazılan metotların çoğunu sınıf dosyalarında tutarız. Eğer controller sınıfına public bir metot yazarsak bu dışarıya açılmış olur.


“NonAction” özniteliği olan metot:

1
2
3
4
5
6
7
8
9
10
11
public ActionResult Index()
{
   MesajYaz();
   return View();
}
 
[NonAction]
public void MesajYaz()
{
   Response.Write("Merhaba ASP.NET MVC");
}
“MesajYaz” metodunun action olmamasını istediğimiz için NonAction özniteliğini ekledik. Eğer bu metoda /Home/MesajYaz şeklinde ulaşmaya çalışırsak 404 hatası alırız. Aynı şekilde public olmayan bir metot içinde 404 hatası alırız.
public kullanmak zorunda kalırsak bu attribute’u kullanırız.

“NonAction” özniteliği olmayan metot:


1
2
3
4
5
6
7
8
9
10
public ActionResult Index()
{
   MesajYaz();
   return View();
}
 
public void MesajYaz()
{
   Response.Write("<h1>Merhaba ASP.NET MVC</h1>");
}
/Home/MesajYaz şeklinde ulaşmaya çalışırsak başarıyla mesajımızı alırız.