Web uygulamalarında en çok ihtiyaç duyulan şeylerden birisi Validation İşlemleridir.Form verilerini kullanıcı tarafında(Client side) javascript ile kontrol ettirmeniz, en azından boş bırakılmaması gereken alanları (requied fields) giriş almaya zorlamak ya da bazı alanları belirli aralıklar dışında değer girişinden korumak ( range validation) gerekebilir. Bu işlemler form tabanlı klasik geliştirme ortamlarında view kısmında çözülür. Ama MVC yapılarında php ve java frameworkler de dahil genel olarak model kısmında yapılan annotationlar ile bu işi çözmeye çalışırlar. Sebebi ise model kısmındaki tanımlamaların view kısmında yapılacak tanımlamalara göre daha basit olması ve verilerin sağlıklı girilmesinden yine Model kısmını geliştirenlerin yani kısaca data tier kısmında çalışanların sorumlu olmasıdır. ASP.Net MVC ile de bu işlemlerin yapılması oldukça kolaydır. Model kısmında tanımlamalarını yaptığımız veritabanı modellerimizde alanların üst kısımlarına yaptığımız annotationlar ile bu işlemleri kolayca gerçekleştirebiliriz.
[Required(ErrorMessage="Bir fiyat girmelisiniz...")]
[Range(0.01, 100.00,ErrorMessage="Fiyat 0.01 ile 100.00 TL arasında olabilir")]
public decimal Fiyat { get; set; }
Yukarıdaki örnekte olduğu gibi System.ComponentModel.DataAnnotations alanındaki attributelarla bu işlemleri tanımlamak oldukça kolay ve etkili. Bu alanlarda tanımlanabilecek annotationlar ve açıklamaları şöyle:
- Required: Girilmesi zorunlu alan oluşturur.
- DisplayName: Form alanlarında kullanmak üzere text tanımlamaya yarar.
- StringLength: Alanda girilebilecek en fazla karakter sayısını belirler.
- Range: Alan için girilebilecek en küçük ve en büyük sayısal değerleri tanımlar.
- Bind: Parametrelere ya da form değerlerini modele yüklerken dahil edilecek ya da çıkarılacak alanları belirler.
- ScaffoldColumn: Editör Formlarından alan saklama işlemini gerçekleştirmeye yarar.
using System.Web.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MvcOrnekUygulama38.Models
{
[Bind(Exclude = "KullaniciId")]
public class Arac
{
[ScaffoldColumn(false)]
public int KullaniciId { get; set; }
[DisplayName("Arac")]
public int AracId { get; set; }
[DisplayName("Marka")]
public int MarkaId { get; set; }
[Required(ErrorMessage="Bir araç takma adı seçilmeli...")]
public string TakmaAd { get; set; }
[Required(ErrorMessage="Fiyat girmelisiniz...")]
[Range(0.01, 100.00,ErrorMessage="Fiyat 0.01 ile 100.00 arasında olmalı...")]
public decimal Fiyat { get; set; }
[DisplayName("Arac Resim Url")]
[StringLength(1024)]
public string AracResimUrl { get; set; }
}
}
Bu şekilde model sınıfını güncellediğimizde view kısmında javascript ile form validation işlemleri yapılmakta ve girişlerin daha sağlıklı olması sağlanmakta.
İlerleyen zamanlarda MVC üzerine daha düzenli yazılar yazmaya çalışacağım.