CustomValidator; kendi validation kontrolümüzü oluşturmaya olanak sağlar. Bu kontrolü ya JavaScript fonksiyonu yazıp client taraflı yada server taraflı yapabiliriz. Her iki taraf içinde yazılacak fonkisyon birbirine benzerdir. Her ikisde iki parametre alır. Bunlar biri validator için bir “referans” diğeri ise “argument” nesnesidir. Bu nesne input kontrolünün o an ki değerinin içeren bir değer almasını sağlar ve IsValid özelliği ile girilen input değerinin geçerli olup olmadığını belirler.
Örneğin girilen değerin 5’in katları olup olmadığını kontrol etmek istersek aşağıdaki gibi bir client taraflı Javascript fonksiyonu bize yardımcı olacakır:
<script language="JavaScript">
function IDValidate(ctl, args)
{
args.IsValid=(args.Value%5 == 0);
}
</script>
Client taraflı validation otomatik olarak gerçeklşir. CustomValidator ‘ ün ClientValidationFunction özelliğine yazdığınız JavaScript fonksiyonunun adını yazmanız gerekmektedir. (Yukarıdaki javaScript kodunda IDValidat bizim fonksiyonumuzun adıdır).
Bir sayfa post back edildiği zaman, ASP.NET CustomValidator.ServerValidate olayını tetikler. Bu olay için C# kodu yazılır. Her ne kadar JavaScript kodu bizlere bir tercih olarak sunulmuş olsada, validation ların istenilen kontrolleri gerçekleştirip gerçekleştirmediğinden emin olabilmek için server taraflı kontrol yapmak gereklidir. Çünkü kullanıcının kullandığı browserda JavaScript özelliği kapalı ise istenilen kontrol gerçekleşmiyecektir.
Aşağıda server taraflı validation yapmak için gerekli fonksiyon bulunmaktadır.
protected void EmpIDServerValidate(object sender, ServerValidateEventArgs args)
{
try
{
args.IsValid = (int.Parse(args.Value)%5 == 0);
}
catch
{
// İstanilen türden bir veri girilmemiş ise
args.IsValid = false;
}
}
Son olarak ise CustomValidator un bu özelliği çalıştırabilmesi için taglar içerisinde bulnması gereken özellikler:
<asp:TextBox runat="server" ID="ID" />
<asp:CustomValidator runat="server" ControlToValidate="ID"
ClientValidationFunction=”IDValidate”
ErrorMessage="ID 5 in katları olmak zorundadır. " Display="dynamic">*
</asp:CustomValidator>
ASP.NET 2.0 da CustomValidator’ a ValidatEmptyText adında bir özellik eklenmiştir. Bu özelliğin default değeri false dir. Fakat, client taraflı bir fonksiyon oluşturmuş iseniz bu fonkisiyon boş değerler vermek için girişimde bulunacaktır. Bu nedenle, server taraflı olay ile ayı davranışı vermesi için ValidateEmptyText özelliğini true yapmanız gerekmektedir.
http://www.asepedatnet.com/makale_goster.aspx?Id=19
Ortam sanal olsa da, islenen suc gercektir...
|