Makale Özeti

Bir önceki makalede basit bir custom webcontrol geliştirmiştik. Simdi bu kontrole nasıl validation ekleyebilecegimizi konusalim

Makale

ASP.NET 2.0'da Custom WebControl'ler - II
Embedded Validation

Yiğit Özgül - yigitozg@yahoo.com 

Bir önceki makalede basit bir custom webcontrol geliştirmiştik. Simdi bu kontrole nasıl validation ekleyebilecegimizi konusalim
Örnek olarak bir RequiredFieldValidation üzerinden gidelim. Required olma seçeneğini kullanıcıya bırakmak açısından bir önceki makalede oluşturduğumuz CustomTextBox nesnemize boolean bir Required Property'si ekliyoruz.

Required

Validation'da oluşacak hata mesajını ve ASP.NET 2.0'ın sağladığı ValidationGroup özelliğini set edebilmek için aşağıdaki gibi

RequiredErrMessage, RequiredText ve ValidationGroup

Property'lerini ekliyoruz

CreateChildControlsMetodu 

Not : Property'lerin üzerinde görülen Category attribute'u eklediğiniz property'inin, PropertiesPane'i kategorize ettiğinizde hangi başlık altında gösterileceğini belirtir

  PropertyPane



Alanın Required olması durumunda, CustomTextBox'in kontrol ağacına bir RequiredFieldValidator eklemek için,  CreateChildControls()'a aşağıdaki kod bloğunu yazıyoruz.

CreateChildControlsMetodu

Burada ControlToValidate property'sine CustomTextBox'ımızın kontrol ağacına eklediğimiz TextBox'in ID'sini atıyoruz.
Display Property'sini dışarıdan bir property aracılığıyla ValidatorDisplay enumeration'indan bir değere set edebilirsiniz. Ben şimdilik validation hatalarının görünmesi için ValidatorDisplay.Dynamic olarak set ediyorum.
Ve son olarak RequiredFieldValidator'ımızı kontrol ağacına ekliyoruz. RequiredFieldValidator'a verdiğimiz "rfv" ID'si client-side'a, (örneğin CustomTextBox1 ID'li bir kontrol için) CustomTextBox1_rfv olarak render edilecektir.

Simdi derlediğimiz dll'i bir web projesinin referanslarına ekliyoruz. Sayfaya bir CustomTextBox, Buton ve Validation Summary ekleyerek validation'ımızı kontrol edelim.

Taglar

Sayfadaki butona tıkladığımızda aşağıdaki sonuçla karşılaşıyoruz.

Ornek

CustomTextBox'a ekleyeceğiniz birçok property aracılığıyla Validator'in css class'ından tutun da, Mesaj kutusu çıkarıp çıkarmayacağına kadar set edebilirsiniz.
Kontrol ile embedded bir validator olmasının diğer bir iyi yanı da kontrolü sayfada görünmez yapmak istediğinizde sadece kontrolün visible seçeneğini kapamanızın yeterli olması. Bir CustomControl'un Visible property'si false olarak set edildiyse Render edilmediği için validation probleminden de kurtulmuş olursunuz.

Bu makalede sadece RequiredFieldValidation icin bir örnek yaptık. Aynı yöntemle RegularExpressionValidation ve RangeValidation'da gerçekleştirebilirisiniz.

Yiğit Özgül - yigitozg@yahoo.com