Denilzi, Yurt, Kyk, özel yurt, öğrenci yurdu, kız öğrenci, erkek öğrenci
Ağu
19

Asp.NET Validation Control

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (1 Oy, Ortalama: 5 / 5)
Loading ... Loading ...

Validation Nedir Ne işe yarar?

Küçük bir senaryo düşünelim. Bir site tasarladık ve bu sitede üyelik sistemi ekledik. Veri tabanına gönderilecek veriler için girdi noktalarımız olacaktır.(Textbox, Combobox vs.) Üye olacak kişi girdi alanlarını doldurarak “Kaydet” butonuna tıkladığında bilgiler veritabanına gönderilecektir. Bu bilgiler gönderilmeden önce bir kontrolden geçirmemiz gerekmektedir. Mesela belli alanlar boş bırakılmalı ya da istediğimiz formatta yazılmalı. Bu tür işlemleri yapabilmek için birkaç seçeneğimiz vardır. şunlar;

- Bilgileri alıp, code behind’da belli kontroller yapmak buna göre exception oluşturmak ya da herhangi bir şekilde kullanıcıya bir hata mesajı göstermek. Tabi bu kontrolleri code behinde’da yapmak için, kullanıcının bu verileri girdiği sayfa postback (sayfa sunucuya gidip – gelmeli) yapılmalı, bundan dolayı bu yöntem çok kullanışlı ve verimli değil. ( Ayrıca çok kullanılmayan ve tercih edilmeyen bir yöntem )
- Diğer bir yöntem ise bu alanları JavaScript kullanarak client-side’da kontrol yapmak. Bu yöntem yukarıda anlattığıma göre biraz daha kullanışlı, ama bir sürü if-else yazmamız gerekecek.
İşte Asp.NET’teki Validation compenentleri bizi bu işlerle uğraşmaktan kurtarmak için tasarlanmış bileşenlerdir.

Şöyle ki; hem işimizi client-side hallediyor (yani boş alan kontrolü, ya da istenilen aralıkta olması, gereken bir değerin kontrolü gibi.) hem de bir sürü if-else kullanmaktan kurtarıyor. (Kısaca .NET nimetleri diyebiliriz. :) )

ToolBox’tan Validation’a geldiğimizde üstteki Resmi göreceksiniz. Buradaki componentleri genel olarak açıklamak gerekirse;

RequiredFieldValidator: Doldurulması gerekli olan alanlar için kullanılır. (Kullanıcı adı, şifre)
RangeValidator: Bir alanın belirli değerler arasında veri girişi olmasını istenen durumlarda kullanılır. (Şifrenin 8 karakterden çok, 16 karakterden az olması )
RegularExpressionValidator: Bir alanın belli bir regex pattern’a uygun olması istenen durumlarda kullanılır ( Mail adresi vs.)

CompareValidator: Bir alanın diğer bir alana göre karşılaştırılması, ya da bir alanın tipinin karşılaştırılması için kullanılır.
CustomValidator : Adından da anlaşılacağı gibi validation’ı bize bırakan bir component.
Validation Summary: Validation özeti. Oluşturduğumuz validation nesnelerinin hata mesajları burada gösterilir.

Küçük bir örnek ile anlattıklarımızı uygulayıp detaylarını görelim.
Ben basit örnek için bir siteye üye olma senaryosu tasarladım.


Yukarıda gördüğümüz şekilde basit bir form ve Textbox’ların yanlarında gördüğünüz (*), (**), (***), (!) validation’ların Text değerlerine atanmış ifadelerdir.

Şimdi tek tek her Text alanı için eklenen validation kontrolün properties’ ini inceleyelim;

İlk olarak Textbox’larımızın (ID) isimlerini vereyim

Kullanıcı Adı : kadi
Şifre : sifre
İsim & Soyisim : isim
Kimlik Numarası : kimlikno
Telefon : tel
E-Posta : eposta

Tüm Text alanları için RequiredFieldValidator kullanıldı ve değer girilip girilmediğini kontol edeceğiz.

Kontrolün Properties görüntüsü:

Gördüğünüz gibi arkadaşlar. Şimdi tek seferlik gerekli tüm alanları anlatacağım. Bundan sonra ise sadece değişiklik yapılan alanları göstereceğim.

ControlToValidate: Hangi alanı kontrol edeceğimizi buradan seçiyoruz. Açılır listemiz var ve buradan alanları secebiliyoruz.
Display: 3 seçeneğimiz var;
-Static: Validation text değerinin gösterileceği yer, baştan ayrılır. (Burada static gözükse de, bence bunu tercih etmeyin; çünkü table’ların aralıklarının kaymasına sebep olabiliyor)
-Dynamic: Text değerinin gösterileceği yer ayrılmaz. Gösterilmesi gereken durumda, uygun bir şekilde yer ayrılır.
-None: Bu seçenekte ise bu değer hiç gösterilmez. Fakat ValidationSummary’de ErrorMessage gözükür.
EnabledClientScript: Client’da çalışabilmesi için. (Yani diyelim ki ismi girmedik. Uyarı verdi. Tekrar ismi girdiğimizde hemen otomatik olarak validation uyarı (*) ifadesini kaldıracaktır).
Error Message: Burada yazdığımız hata mesajları “Kaydet” butonuna bastığımızda ValidationSummary kontrolünde gösterilecektir.
SetFocusOnError: Adından da anlaşılacağı gibi, validation bir hata ürettiğinde, hata oluşturan kontrolün seçili olmasını sağlar.
Text: Girilen değer istenilen kriterlere uygun değilse validation kontrolünün ekrana çıktısı buraya yazılan olur.
ValidationGroup: Bu da birden fazla validation’ı bir grupta toplamaya yarıyor. Bizimde senaryomuzda kullandığımız üzere biraz anlatayım;
Formun altında “Kaydet” ve iptal butonlarımız var. Tamam’a basınca bu validation’ların çalışması lazım, iptal’e basınca çalışmaması lazım.
İşte burada işe yarayacak ValidationGroup, “Kaydet” butonun ValidationGroup özelliğine bizim oluşturduğumuz validation’ların grubunu yazınca, iptal butonu bu validation kullanmayacaktır.

Diğer Validation’larıda bu şekilde ayarlamalıyız. Tek yapacağımız değişiklik ControlToValidate seçeneğinde uygun kısmı şeçmektir.

Kullandığımız RangeValidator kontrolün properties’lerini inceleyelim.

Burada fazladan MinimumValue ve MaximumValue değerlerini giriyoruz.

RagulerExpressionValidator kontrolün properties’lerini inceleyelim.

Burada ise ValidationExpression kısmını dolduruyoruz. Ki burada girdiğimiz RegEx değeri E-Postamızın Geçerli olup olmadığını kontrol ediyor.

Sizin için bu değeri vereyim;
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Genel olarak bir validation’ın özelliklerinden bahsettik. Ama özellikle bahsetmek istediğim iki validation nesnesi var, CustomValidator ve ValidationSummary.
CustomValidator da istediğimiz karşılaştırmayı yapabiliyoruz ve kod da yazabiliyoruz demiştim.

CustomValidator properties:


Gördüğünüz gibi fazladan bir şey eklemiyoruz. Fakat kod ile kontrol yapacağımızdan aşağıdaki alana geçiyoruz.

CustomValidator’ın properties penceresi ve events penceresi. Buradaki ServerValidate çok işimize yarayacak. Yanında gördüğünüz methodu oluşturunca ( çift tıklayarak ) görüceksiniz ki codebehind kısmında bir method gövdesi oluştu. İşte bu methodun içine yazacağımız her şey client-side’da çalışacak.
Bu kısmı kullanıcı ismi daha önceden kullanılmış mı diye kontrol edebiliriz.

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)

{

}

Bahsettiğim bir diğer validation kontrolü ise, ValidationSummary idi; bu da bizim validation’larımızın hata mesajlarının toptan gözüktüğü yer.

Bunun Properties kısmını inceleyecek olursak;

Display mode: hata mesajlarının nasıl görüntüleneceği
ShowMessageBox: adında da anlaşılacağı üzere, errormessage’ları bir messagebox üzerinde göstermeyi sağlıyor.
ShowSummary: Sayfaya ValidationSummary’i koyduğunuz yerde hataların gösterilmesini sağlıyor.

Şimdi genel olarak öğrendiğimize göre artık hayal gücünüzle pek çok şeyi post etmeden kontrol edebilirsiniz.

(Harun Kardeşime teşekkürlerimi sunarım)

Herkese iyi çalışmalar.

Selametle…

Kaynak

Ağu
01

ASP.NET AJAX 4.0 yollarında….

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (1 Oy, Ortalama: 5 / 5)
Loading ... Loading ...

ASP.NET 3.5 ile artık Framework’e dahil olan AJAX Extension konusunda gelişmeler devam ediyor. ASP.NET AJAX 4.0‘a ait Preview sürümü download paketine aşağıdaki adresten ulaşabilirsiniz. Unutmayın ki Preview (Önİzleme) sürümlerindeki özelliklerinin üretimde kullanılması doğru olmaz ve bu özelliklerin gerçekten bir ürün olarak Microsoft tarafından son sürümde yayınlanıp yayınlanmayacağını da kimse garanti edemez.

http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=15511

Peki ne gelişmeler var?

Aslında şu an için gelişmelerin neredeyse hepsi istemci taraflı uygulamalarla ilgili. Sunucu tarafına yeni bir ASP.NET kontrolü gelmiyor. ASP.NET AJAX Features paketindeki sunucu kontrollerinin de AJAX’ın bir sonraki sürümünde bulunacağı beklentiler arasında.

İstemci tarafındaki yeniliklerden faydalanabilmek için yukarıdaki adresten download paketini bilgisayarınıza indirdikten sonra hemen MicrosoftAjaxTemplates.js dosyasını ASP.NET AJAX destekli bir WebForm’un HTML kısmında include etmeniz yeterli olacaktır. Bunu ister standart HTML komutları ile yapın ister sayfadaki ScriptManager’a bir ScriptReference ekleyin, karar sizin.

İstemci taraflı Template (Şablon) yapıları

El yapımı AJAX yolculuklarımızda belki de en can sıkıcı noktalardan biri sürekli istemci tarafında for döngüleri içerisinde DOM ile HTML nesneleri yaratıp uygun verileri içlerine yerleştirip sayfada konumlarını ayarlamaktır. Keşke sunucu tarafında Repeater gibi istemci de bir şeyler olsa da biz bir şablon hazırlayıp datayı versek, binding işlemini de kendisi yapsa? Ne güzel olurdu değil mi? Eh olsun o zaman :)

<asp:ScriptManager ID=”ScriptManager1″ runat=”server”>

<Scripts>

<asp:ScriptReference Path=”MicrosoftAjaxTemplates.debug.js” />

</Scripts>

</asp:ScriptManager>

İlk önce yukarıdaki şekilde AJAX 4.0′ı sayfamıza ekleyelim. Ben özellikle debug uzantılı dosyayı sayfama ekledim, böylece herhangi bir hata oluştuğunda anlamlı açıklamalarla karşılaşacağız. Bu durumun Web.Config’de Debug ayarı ile kısmen aynı olduğunu düşünebilirsiniz.

<div id=”Sablon” class=”sakla”>

Ürün Adı: <input type=”text” value=”{{ Adi }}” />

Fiyatı: <input type=”text” value=”{{ Fiyat + ‘YTL’ }}”/>

<!–* if (Fiyat>5) { *–>

Pahalıymış

<!–* } *–><br />

</div>

Bu da nesi? Karşınızda istemci tarafında şablonumuz. Bunu bir anlamda sunucu taraflı ASP.NET Repeater kontrolünün ItemTemplate’ine benzetebilirsiniz. Sablon adındaki DIV içerisine istediğiniz HTML tasarımı yerleştirebilirsiniz. {{ ve }} işaretleri arasındaki komutlar aslında birazdan verimizi bağlarken kullanacağımız veri kaynağımızda Field’ler diyebiliriz.  Örneğin bizim veri kaynağımızda Adi ve Fiyat adında iki özellik bulunacak. Kaynaktaki değerler {{ }} işaretleri ile belirlenmiş yerlere otomatik olarak yerleştirilecek. {{ ve }} işaretleri arasında isterseniz ek JavaScript metodları da kullanabilirsiniz.

<!–* if (Fiyat>5) { *–>

Pahalıymış

<!–* } *–><br />

Bu üst kısımda gördüğünüz JavaScript kodunu biraz farklı yazmamız gerekti. {{ ve }} işaretleri arasında JavaScript komutları kullanabiliriz demiştik fakat burada kullanacağımız JavaScript’in kendisinde de { ve } işaretleri bulunuyor. İşte böyle durumlarda <!–* ve *–> işaretlerini kullanmamız gerekiyor. Buradaki IF kontrolü hedef verideki Fiyat değeri 5′ten büyük olunca Pahalıymış yazılmasını sağlayacak.

<style type=”text/css”>

.sakla

{

visibility:hidden;

display:none;

}

</style>

Yukarıdaki CSS sınıfını bizim şablonumuzu sayfada görünmez yapmak için kullanıyoruz. Bunun haricinde sayfada iki şeye daha ihtiyacımız var. Birincisi bir düğme! Düğmeye basıldığında bu şablon üzerinden nesneler yaratılarak sayfaya yerleştirilecek. İkincisi ise şablondan yarattığımız nesneleri sayfada yerleştireceğimiz bir HostElement.

<input id=”TIKLA” type=”button” value=”button” onclick=”Yarat();” />

<div id=”BURAYA”></div>

Düğmeye basıldığında Yarat adındaki bir JavaScript fonksiyonu çalıştırılacak. BURAYA adını verdiğimiz HTML DIV içerisine şablondan türetilen nesneler yerleştirilecek. Sıra geldi Yarat JavaScript fonksiyonunu yazmaya.

function Yarat()

{

var Sablonum = new Sys.Preview.UI.Template.getTemplate($get(“Sablon”));

Sablonum.createInstance($get(“BURAYA”), {Adi: “XX”, Fiyat: “34″});

Sablonum.createInstance($get(“BURAYA”), {Adi: “XX”, Fiyat: “2″});

}

Görüldüğü olay aslında çok kolay. İlk satırda Sablonum adında bir değişkene Sablon üzerinden Template nesnesini yaratıyoruz. getTemplate metoduna $get ile sayfadaki şablonu içeren DIV elementini vermemiz yeterli oluyor. Sonrasında bu şablon üzerinden yeni nesneler üretmemiz gerek. Bunun için createInstance metodunu kullanacağız. createInstance metodu toplamda iki parametre alıyor; üretilen nesne nereye yerleştirilecek ve üretilirken hangi veri kaynağı kullanılacak. İlk parametreye $get ile sayfadaki DIV’i bulup veriyoruz, ikinciye ise bir JSON verisi aktarıyoruz. Burada kolaylıkla ASP.NET AJAX’daki PageMethodlardan dönen verilen de aktarılabilir.

Daha kolay olamazdı.
Daha kolay olamazdı.

Başka, başka?

XML ile declarative programlama AJAX’ın yıllardan beri konuşulan altyapılarından biri. İlk konuşulduğu şekli ile olmasa da ilginç bir yapı ile karşımıza çıkması olası. Şu an için bu konularda örnekler yapıp ilerlemek için biraz erken sayılabilir. DataView gibi bazı kontrollerin istemci taraflı sürümlerinin framework’e dahil edilmesi bile dedikodular arasında. Zamanla ufukta güneş açtıkça gelişmeleri tabi ki sizlerle paylaşıyor olacağım. Şimdilik bu kadarı ile yetinmeye çalışalım ;)

Hepinize kolay gelsin.

Kaynak

Tem
30

PHP için SQL Server 2005 sürücüleri

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (1 Oy, Ortalama: 5 / 5)
Loading ... Loading ...

Microsoft’un Windows Server 2008 ile beraber gelen IIS 7.0 içerisinde PHP’nin Linux sunuculardan daha hızlı çalıştığı konusundaki iddiası ve sonrasında Expression Web 2 içerisinde PHP desteği ile artık “PHP ve ASP.NET kardeşliği” diyebileceğimiz yapıya bir destek de SQL 2005 sürücüleri ile geliyor. Aşağıdaki adresten PHP için bir PHP 5 eklentisi olarak gerekli yüklemeleri edinerek PHP içerisinde artık daha rahat bir şekilde SQL 2005 kullanabilirsiniz.

http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&displaylang=en

Biraz daha yükselerek kuş bakışı sunucu taraflı senaryolara bakarsak artık IIS 7.0 üzerinde PHP ve ASP.NET’i aynı site içerisinde beraber çalıştırıp hatta aynı FormsAuthentication yapılarını kullanabilmekle kalmayıp aynı veritabanı sunucusunu da kullanabiliyorsunuz.

Sonumuz hayrola :)

Kaynak

Tem
28

Asp.Net Dinamik Meta Tag Ekleme (Veri Tabanından Veri çekerek.)

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (1 Oy, Ortalama: 5 / 5)
Loading ... Loading ...

GelecekÇokNET de Yayınladadığım küçük bir makale..

Canlı Meta Tagların Nasıl oluşturulduğunu Veri tabanından nasıl çekildiğini göstereceğim. bunun için VeriTabanı oluşturmalıyız. Ve 3 tane alan belirlemeliyiz. Bunlar Keywords,PageTitle,Description ve Tablomuzun ismi MetaTag olsun.
şimdi gerisini Aşağıdaki kodları izleyerek yapabilirsiniz…

MasterPage.Cs içinde Sayfanın Page Load’ ına Yazılacak Kod
protected void Page_Load(object sender, EventArgs e)

{

//Meta ve Keywordslar

//Önce Dataları Veritabanından Okuyalım

string PageTitle = “”;

string Keywords = “”;

string Description = “”;

SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["MetaTag"].ToString());

sqlCon.Open();

SqlCommand sqlCom = new SqlCommand(“SELECT Keywords, PageTitle, Description FROM MetaTag”,sqlCon);

SqlDataReader sqlDr = sqlCom.ExecuteReader();

if (sqlDr.Read())

{

Keywords = sqlDr["Keywords"].ToString();

PageTitle = sqlDr["PageTitle"].ToString();

Description = sqlDr["Description"].ToString();

}

sqlCon.Close();

Page.Header.Title = PageTitle;

// Metadata tagını tanımlamak

HtmlMeta metaDescription = new HtmlMeta();

metaDescription.Name = “Robot”;

metaDescription.Content = “index,follow”;

// Sayfaya ekliyoruz.

Page.Header.Controls.Add(metaDescription);

// İkinci bir metadata tagını eklemek

HtmlMeta metaKeywords = new HtmlMeta();

metaKeywords.Name = “googlebot”;

metaKeywords.Content = “index,follow”;

Page.Header.Controls.Add(metaKeywords);

}


Selametle…

Kaynak

Tem
18

Expression Web 2 ve PHP desteğine dair ayarlar.

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (1 Oy, Ortalama: 5 / 5)
Loading ... Loading ...

Daron abinin sitesinde gördüğüm son yazı.. biraz ilgimi çekti hoşumada gitti :)

Expression Web 2 ile beraber gelen belki de en ilginç ve güzel yeniliklerden biri de PHP desteğinin gelmesi. Microsoft’un Windows Server 2008 ile beraber gelen “PHP Windows sunucularda artık Apache’den daha hızlı çalışıyor” iddiası çerçevesinde böyle bir gelişme aslında çok da garip değil. Yazılımcılar olarak baktığımız bu durum tabi ki bizim için çok faydalı, tek bir Expression Web ile hem ASP.NET hem PHP siteleri “color coding” dahil düzenleyebiliyor ve çalıştırabiliyor olmamız müthiş bir avanta