Asp.Net Validation Kontrolleri

Asp.Net tabanlı sitelerde işinize çok yarayacak bir makale daha sizlerin huzuruna sunmaktan çok mutluyum ha. Bu kontrollerde nerelerde işinize yarar ? Mesela zorunlu alanlarınız var, kullanıcı bunları girmediği zaman bir hata ile karşılamak yerine güzel bir mesajla doğru yola dönebilir. Ya da aynı adda dosya yüklenmesini de bu kontroller sayesinde rahatça engelleyebilirsiniz. Ve bunun qibi birçok olay hadi kolay qele …

A handa Validation Kontrolleri

Örneklerimizi yandaki örneğimize göre anlatacağız.

Sayfaya (Adı)TextBox1.text, (Soyadı) TextBox2.Text, (E-Posta)TextBox3.Text, (Şifre)TextBox4.Text, (Şifre Tekrar)TextBox5.Text ve Buton ekledik.
1. Compare Validator: Karşılaştırma kontrolüdür. Web Sayfalarında sıkça karşılaşılan bir kontroldür. Yandaki Örnekte Şifre ve Şifre Tekrarı alanlarına şifrenin doğruluğunu, her iki textbox’ı bu kontrolü kullanarak karşılaştırabiliriz.

Eğer her iki alana şifleriniz aynı girmediyseniz aşağıdaki gibi bir hata alırsınız. Tabi buradaki uyarı siz belirliyorsunuz ben örnek olarak “Şifreniz Uyuşmuyor” şeklinde yazdım.

Bu ve buna benzer karşılaştırmalar yapabilirsiniz.

Kontrole ait bazı özellikler;

ControlToValidate: Hangi form elemanı kontrol edilecekse o formun ID si yazılır. Örneğin biz Textbox4.Text’ in kontrol edilmesini sağladık.

ControlToCompare: Karşılaştırılacak Form elemanının ID si yazılır. Örneğin biz TextBox4.Text in TextBox5.Text ile karşılaştırılmasını istedik. Dolayısıyla ControlToCompare ye TextBox5.Text ID sini belirtik.

Text: Ekranda gözükecek olan Hata mesajı yazılır.

Type: Karşılaştırılacak olan veri tipi belirtilir. (integer, string gibi)

Not: Yukarıdaki açıkladığımız özelliklerin bazıları diğer geçerlilik kontrolleri içinde ortaktır.

2. Range Validator: Sayfayaeklediğimiz kontrollere ait önceden belirtilen tipteki değer aralığının kontrolünü sağlar. Örneğin sayfamıza bir TextBox. text birde Buton ekleyelim. Ve Propertieste Öncelikle ControlToValidat seçeneğinden kontrol edilecek olan sayfamızdaki kontrolü seçiyoruz(TextBox1.Text). Daha sonra Propertieste MaximumValue değeri ve MinimumValue aralıklarını giriyoruz örneğin MaximumValue değerine 100,MinimumValuedeğerinde 0 girelim. Burada dikkat etmemiz gerekeken nokta veri tipini belirtmek. Biz Integer bir değer kullanacığımız için Veri tipini (Type) Integer olarak belirliyoruz.

Biz sayfamız eklediğimiz TextBox. Text kontrolüne dışarıdan 0 – 100 Aralığı dışında bir değer girecek olursak bize hata verecek. 0 – 100 Aralığında bir değer girersek işlemi doğru uygulamış oluruz ve hiçbir hata ile karşılaşmayız. Bu örneği yazımızın başında belirtmiş olduğum örnekten ayrı bir örnekte veriyorum. Yukarıda belirtmiş olduğum örnek görünüm ise aşağıdaki gibidir.

https://i2.wp.com/resim.sanalkurs.net/uploads/Range1.jpg

Gördüğümüz gibi önceden belirtilen değer Aralığımız 0 ile 100 olduğu için bu değer aralığı dışında bir değer girdiğimizde yukarıdaki gibi uyarı alırız. Eğer girdiğimiz değer 0-100 arasında bir değer ise uyarı vermeyecektir.

3. RequiredFieldValidator: Diğer geçerlilik kontrollerinden farklı olarak olarak bu kontrol kullanıcının dışarıdan veri girilip girilmediğini kontrol eder. Örnek uygulamamızda Ad, Soyad, E-Posta ve şifre girişlerinden Herhangi birine değer girmediğimizde bizi uyarır. Tek bir alanı kontrol edebileceğiniz gibi, birden fazla alanıda kontrol edebilirsiniz. Örneğin Ad, Soyad, E-posta ve Şifre alanlarının hepsini kontrol edebiliriz veya Girilmesi Zorunlu olan alanları belirtip bu alanları kontrol edebiliriz tamamen size kalmış bir tercih. Öncelikle değer girmeden kaydet diyelim.

Görülüğü gibi hiçbir alana değer girilmemiş ve bu alanların boş geçilemeyeceği ni veya bu alanları girmediniz gibi bize bilgi verir. Kullanıcıları bu kontrolle bilgi girişine zorlayabilirsiniz.

Gelin bir de “E-Posta” alanı hariç tüm alanlara değer girelim, bir de öyle sonuca bakalım.

Bir çok özelliğe sahip bu kontrole basit olarak E-Posta adresini vereceğiz. Bu kontrol Karakter kontrolü yapar. Örneğin uygulamamızdaki E-Posta alanına uygun formatta e-posta adresi girilip girilmediğini kontrol edelim. Burada kontrol edilecek karakterler “@” ve “.” Karakterleridir. E-Posta Alanı yanına Regular Expression Validator kontrolümüzü ekliyoruz veControlToValidat özelliğini önceden belirlediğimiz TextBox3.Text seçiyoruz. Çünkü bu alanı kontrol edeceğiz. Daha sonra ValidationExpress ten İnternet e-mail adres seçiyoruz.

Ekranda hemen altta gördüğünüz tanım ise bizim e-posta adresimizdeki “@” ve “.” Karakterlerini kontrol eden bir tanım görüyorsunuz.

w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*

Not: E-mail adresinden başka RegularExpression Editor de birçok seçenek mevcuttur. Posta kodu kontrolü, Telefon numarası v.b uygulamaları kontrol edebiliriz.

Dikkat ettiyseniz “.” Karakterini kullanmadım ve Uyarı verdi.

4. Custom Validation: Bu kontrol diğer geçerlilik kontrollerinin dışında bir kontrol tanımlanması gerekiyorsa bu kontrol kullanılır. Diğer kontrollerde olduğu gibi bu kontrolde de Text ve ValidateControl aynı şekilde kullanılabilir.

5. ValidationSummary: Evet arkadaşlar şuana kadar anlatmış olduğumuz tüm geçerlilik kontrollerinin belli amaçlara göre kullanıldığını gördük. Ancak ValidationSummary kontrolü diğer geçerlilik kontrollerinin Hata mesajlarını ErrorMessage bilgilerin özetinin verildiği kısımdır. Uygulamamızda ki geçerlilik kontrollerinin ErrorMessage bilgilerini bir arada belirtebiliriz. Bunun için eklemiş olduğumuz geçerlilik kontrolerininTextÖzelliğiNE “*” karakterini girerek önemli bir durumun veya hatanın olduğunu belirterek ErrorMessage bilgilerini Özet alanında görüntüleyebiliriz.

Umarım işinize yarar ha.

ASP.NET Profile Üzerinde Arama

Bu yazımda ASP.NET’le birlikte gelen Profile sistemini kullanmaktan çekinenlere cesaret verecek bir yöntemden bahsedeceğiz. ASP.NET Profile class’ını inceleyenlerin ilk dikkatini çeken şey kullanım kolaylığıdır. Bu sistem sayesinde veritabanı ve karmaşık kodlarla uğraşmadan kolaylıkla Üyelik ve Profil sistemi oluşturabiliyoruz. Oldukça da sağlıklı çalışıyor. Fakat ilk dikkat çeken şeylerden biri de Profile classında profil özelliklerine göre arama bulunmaması. Bu nedenle bir çok kişi her bir profil özelliğini ayrı tablo sütunu olarak kaydeden Profil Sağlayıcı geliştirmekle uğraşıyor. Halbuki ASP.NET Profile sistemi sonuçta verileri kendine özel bir mantıkla yine veritabanı tablosuna kaydediyor. Bu tablo üzerinde biraz uğraşarak SQL yardımıyla arama yapabiliriz. Sizlere bunun nasıl yapıldığını derinlemesine anlatmayacağım, onun yerine direkt profil tablosundaki belirli bir özelliğin değerini getirebilen bir SQL fonksiyonu paylaşıyorum:

-- =============================================
-- Create date: 09/01/2006
-- Description: Gets the property value from
-- the Asp.Net profile.
-- @PropertyName – The property to
-- be found.
-- @PropertyNamesString – The
-- property names information.
-- @PropertyValuesString – The
-- property values information
-- =============================================
CREATE FUNCTION [dbo].[GetProfilePropertyValue] (
@PropertyName as varchar(max)
, @PropertyNamesString as varchar(max)
, @PropertyValuesString as varchar(max))
RETURNS varchar(max)
AS
BEGIN
DECLARE @StartIndex int
DECLARE @EndIndex int
DECLARE @StartPos int
DECLARE @Length int

-- First we find the starting position
Set @StartIndex = PatIndex('%' + @PropertyName + ':%', @PropertyNamesString) + LEN(RTRIM(@PropertyName)) + 3
Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
Set @StartPos = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As Int)

-- Now we need to know how long it is
Set @StartIndex = @StartIndex + @EndIndex + 1
Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
Set @Length = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As int)

-- Now we get the value we want
RETURN SUBSTRING(@PropertyValuesString, @StartPos + 1, @Length)
END

Bu fonksiyonu SQL Server veritabanınıza kaydedin, ve sonra tek yapmanız gereken bu oluşturduğumuz fonksiyonu SQL select cümlesinde kullanmak.

SELECT
dbo.GetProfilePropertyValue('LastName', PropertyNames, PropertyValuesString)
, dbo.GetProfilePropertyValue('FirstName', PropertyNames, PropertyValuesString)
, dbo.GetProfilePropertyValue('Phone', PropertyNames, PropertyValuesString)
FROM aspnet_Profile

Evet bu kadar basit. Şimdi arama nasıl yapabiliriz? Bu SQL cümleciğini kullanarak (tabi kendi profil özelliklerinizi yazmalısınız) bir View oluşturun. Böylece bu oluşturduğunu View’u kullanarak Profil özellikleri (sütunlar) ve değerleri üzerinde aramalar yapabilirsiniz. Hem daha yüksek performans elde edersiniz, hem de arama işlemi muazzam derece kolaylaşır…