Bu yazımda ASP.NET ile beraber gelen CustomValidator kontrolü ile özel validation mekanizmaları oluşturma konusuna değineceğim.Aslında ASP.NET ile gelen validation kontrollerinin birçoğu ihtiyacımız olan validation mekanizmalarını sağlamakta.Ancak bazı durumlarda farklı isteklere cevap verecek bir validation mekanizması oluşturma ihtiyacı hissedebiliyoruz.Bu gibi ihtiyaçlarımız için ASP.NET'te CustomValidator kontrolünü kullanabiliriz.
CustomValidator kontrolünü kullanmamız için öncelikle 2 taraflı validation mekanizmasını yazmamız gerekiyor.
- İstemci taraflı validation : Kullanıcılara daha hızlı yanıt verilebilmesi için kullanılan mekanizma.
- Server taraflı validation : Veri server tarafına geldiğinde hala daha valid olduğunun doğrulanması.
function FonksiyonAdi(source,arguments)
Burada fonksiyon adi CustomValidator'a parametre olarak verileceği için değişken olabilir.Ancak parametreler bu şekilde kalmalıdır.
Parametrelerin anlamlarını açıklarsak:
- source : Validation mekanizmasını sağlayan kontrolü referans eder.
- arguments : Value parametresi ile validation yapılacak değer alınır.IsValid propertysine ise verinin geçerli olup olmadığı set edilir.
Bunun için öncelikle istemci tarafındaki javascript metodunu yazacağız.
<script type="text/javascript">
function ValidateEt(source,arguments)
var input = arguments.Value; //Validate edilecek olan degerin alinmasi
arguments.IsValid=false; //İlk degerin false olarak atanmasi
var isvalid=false;
if (input.length > 8)
isvalid = true; //karakter uzunlugu 8 den buyukse ilk validation gecilir.
if (!isvalid)
return;
isvalid=false;
for (var i=0;i
if (input.charAt(i) >= '0' && input.charAt(i) <= '9') { //En az bir numerik karakter goruldugu anda validation islemi tamamlanir.
isvalid = true;
break;
}
}
if (isvalid) //Data validate edildi.
arguments.IsValid = true;
}
script>
Javascript kodunda gerekli comment satirlarini yazdigim icin açıklama yapmayacağım.
Geriye ise sadece server taraflı validation işlemi kaldı.
Server Taraflı Validation
Server tarafında ise yine yaptığımız kontrolerrin aynısını tekrarlamalıyız.Bu işlemlerin hepsini CustomValidator kontrolünün OnServerValidate eventinde gerçekleştiriyor olacağız.
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = false;
string data = args.Value;
if (data.Length <>
return;
foreach (char c in data)
{
if (c >= '0' && c <= '9')
{
args.IsValid = true;
break;
}
}
}
HTML tarafında ise markup şu şekilde olabilir:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Textbox1" runat="server" TextMode="Password" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidateEt" ControlToValidate="Textbox1" OnServerValidate="CustomValidator1_ServerValidate" Text="Şifre uzunluğu 8'den büyük olmalı ve en az 1 numerik karakter içermeli">asp:CustomValidator>
<input id="Submit1" type="submit" value="submit" />
div>
form>
Uygulamayı çalıştırdığımızda Textbox1 kontrolü focusunu kaybettiği anda javascript kodunun çalıştığını göreceğiz.Ayrıca submit butonu ile server tarafına geçerseniz server taraflı validation kodumuzun da çalıştığını görebiliriz.
Görüşmek Üzere
0 yorum:
Yorum Gönder