News about .Net ve Software Industry. Happenings in tech industry. Asp.Net, C# and SQL Server related news, tips and advice.
10/28/2005
Birden Fazla Validation Control Kullanilan Sayfalarda Yasanan Problemler
ASP.Net aplikasyonlarınızda 1 den fazla required field validator kullandiğiniz sayfalarda istemediğiniz zamanlarda devreye girdikleri olmuştur.
Validation kontrollerinizin istemediğiniz zamanlarda devreye girmesini önlemenin çeşitli yöntemleri bulunuyor;
1. Yöntem (Sadece bazı durumlarda geçerli)
Validatör kontrolünüzü istenmeyen durumda programın mantık gidişatına göre Asp.Net aplikasyonunuzun codebehind bölümünde validatör kontrolünüzü Enable/Disable ederek istediğiniz zaman aktif, istediğiniz zaman inaktif duruma getirebilirsiniz.
Ör: validasyonKontrolum.Enabled = False
Aspx sayfanızın içinde validatıon'a sebep olan button'u bulup onun attributelarından CausesValidation = False yapabilirsiniz. Bu şekilde o buton artık validation'a sebep olmayacaktir. Eğer o butonun validasyonuna ihtiyacınız var ancak yanlış zamanda fire ediyor ise 2. maddeyi okuyun.
2. Yöntem (Daha komplike durumlar için geçerli - İlk yöntem sorununuzu çözmüyorsa burayı mutlaka okuyun)
Sayfanızda yukarıdaki resimdeki gibi 2 adet textbox ve bunlara ait validatorlarınız ve 2 adet ayrı ayrı işlere yarayan butonunuz bulunsun. (Or: Resimde 1. si Update, 2.si Upload )
Problem:
Bu butonlardan herhangi birine tıkladığınızda requiredfieldvalidatorlarınızdan ikisi birden aktif oluyor .
Çözüm:
Required filed validatorları sadece istediğimiz zaman aktif hale getirmek için opsiyonumuz bu requiredfieldvalidatorların server tarafında çalışmasını sağlamak. Onu da şu şekilde yapacağız;
Öncelikle benim resimdeki örneğime göre hem Update hemde Upload düğmelerim için CausesValidatıon=False yapıyorum. Daha sonra UpdateButtonuna tıkladığımda çağrılacak olan fonksiyona giderek aşsağıdaki satırları ekliyorum.
Private Sub ValidasyonaSebepOlucakButton_Click( hedehodezirtpirt)
ValidatorunuzunIsmi.Validate()
If ValidatorunuzunIsmi.IsValid = True Then
''Butonun yapmasi gereken islemlere devam et
End If
End Sub
Validate() fonksiyonu validation kontrolünüzü aktif hale getiriyor.
IsValid() ise validasyonun sonucunu size True/False seklinde belirtiyor . Bu property'i kullanarak programınızın mantıksal olarak nasıl ilerlemesini istediğinizi belirleyebilirsiniz.
Umarım sorununuzu çözmeye yardımcı olur. Bu arada ASP.Net 2.0 ile gelen "Validation Groups" özelliği bu sorunu kökünden halletmiş olacak.