• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

Asp.Net 4.5 için Yeni Nesil Doğrulama(Validation)

Asp.Net 4.5 tarafındaki Unobtrusive özelliğini ve HTML 5 odaklı yeni nesil doğrulama tekniğini inceliyoruz.

12.06.2013

Yazar: Burak Selim Şenyurt (Google+)

Kategori: ASP.NET

4469

Bilisim sektorunde yer alan ve ozellikle 70li yillarda doganlarin neredeyse tamami bu efsane cumleyi bilir.

A long tim ago in a galaxy far, far away…

Hikaye hep yazili bir anlatim ile baslar ve daha sonra ekran yukaridaki yildizlardan asagiya dogru inerek devam eder. Sornasinda ya bir uzay mekiginin kacis sahnesi ya da imparatorluk gucleri ile isyancilar arasindaki savasla karsi karsiya kaliriz.

Iste gecen gun ozledigim Star Wars serilerinden birisini izlerken bir den kendimi bilgisayarimin basinda ve baska bir hikayenin giris noktasinda buldum.

Karsimdaki ekran da karalara baglamis, alacali bulacali bir gelistirme penceresi duruyordu. Icerisinde ise HTML ve Asp.Net karisimi bir seyler…

Hikayenin Basi

Her sey uzun bir zaman once degil ama kisa bir sure once Asp.Net 4.5 tabanli bir  Empty Web Application acmamla baslamis ve sonrasinda olanlar olmustuConfused smile Aslinda senaryo geregi cok basit olarak bir web form uzerinde dogrulama kontrollerini kullanacaktim. Bunun icin Visual Studio 2012 ortaminda  Asp.Net Empty Web Application tipinden bir proje olusturdum ve asagidaki Web Form icerigini tasarladim.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        Nickname :
        <asp:TextBox ID="txtNickname" runat="server"></asp:TextBox>
&nbsp;<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtNickname" ErrorMessage="Nickname girilmeli"></asp:RequiredFieldValidator> 
        <br />
        Password :
        <asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
&nbsp;<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtPassword" ErrorMessage="Åžifre girilmeli"></asp:RequiredFieldValidator> 
        <br />
        <asp:Button ID="btnLogin" runat="server" OnClick="btnLogin_Click" Text="Login" />   
    </div>
    </form>
</body>
</html>

Web form iceriginin gorsel tasarimi ise asagidaki ekran goruntusundekine benzemisti.

Ekranin gorevi oldukca basitti. Kullanicidan Nickname ve Password bilgisi ile giris yapmasi isteniyordu. Eger bu TextBox kontrollerinin icerigi bos birakilirsa da RequiredFiledValidator kontrolleri devreye girerek kullaniciyi uyarmaktaydi.

Ilk Calisma

Hersey bana gore son derece normaldi ancak calisma zamani boyle demiyordu. Sonuc asagidaki ekran goruntusunde ki gibi olmustu Thinking smile

Tabi ilk dikkatimi ceken nokta Unobtrusive olarak yazilan ve telafuz etmesini halen daha basaramadigim kelime idi. _Dikkati cekmeyen", _mutevazi", _kendi halinde", _fark edilmeyen", _kolay gorulmeyen" gibi Turkce karsiliklari olan kelimenin Asp.Net acisindan onemini arastirirken bakin neler buldum Winking smile

Peki neden boyle oldu?

Ilk olarak zamani geriye alip Asp.Net 4.5 oncesine bakmamiz gerekiyor(Zamani geriye almak keske bir Framework değişikliği kadar kolay olsa degil mi?) Bu nedenle projeyi .Net Framework 4.0 odakli hale getirip yeniden derledim.

ve tabi calistirdim Smile

Calisma zamaninda hic bir sorun yoktu. Her sey yolunda gorunmekteydi. Dogrulama(Validation) kontrolleri de devreye girmis durumdaydi. Sayfanin istemci tarafina gonderilen kaynak icerigine bakildiginda dogrulama islemleri icin uretilmis bir takim Javascript kod parcalari oldugu ve CDATA olarak entegre edildigi kolaylikla gorulebiliyordu.

Bilindigi uzere bu sayede istemci tarafi sunucuya gonderilmeden de dogrulama islemleri yerine getirilebilmektedir.

Web tarafinda dogrulama islemleri istemci tarafinda baslamakta ama sunucu tarafinda da bir kontrol yapilmaktadir. Bunun en buyuk sebebi istemci tarafinin Javascript yurutme gibi bir destegi olmamasi halinde karsi tedbir alinmak istenmesidir.

Asp.Net 4.5 ile birlikte ise daha onceden kullanilan javascript odakli sistem yerine, varsayilan olarak HTML 5_ in data-val-controltovalidate, data-val-errormessage, data-val, data-val-evaluationfunction, data-val-initialvalue gibi nitelikleri(attribute) ve jQuery kutuphanesi ele alinmaktadir. Dolayisila Asp.Net 4.5 tipinden bir Empty Web Application soz konusu oldugunda ve dogrulama islemlerini uygulamak istedigimizde, bazi ayarlamalari yapmamiz soz konusudur.(Bu islemlere Web Forms tipinden bir Asp.Net uygulamasi actiginizda ihtiyac duymayabilirsiniz)

Adimlar

Tekrar Target Framework_ u .Net Framework 4.5_ e cekelim. Sonrasinda ise Unobtrusive Validation akisi icin ihtiyacimiz olan jQuery kutuphanelerini NuGet paket yonetim araci ile projemize dahil edelim. (Son surumleri eklememiz daha akillica olabilir)

Bu install islemi sonrasi ihtiyacimiz olan jQuery kutuphaneleri projeye ilave edilmis ve Scripts klasoru icerisine atilmis olacaktir.

ScriptResourceDefinition Bildirimleri

Sonrasinda tek yapilmasi gereken uygulamanin baslatildigi bir yerde dogrulama islemleri icin gerekli path tanimlamalarinin ScriptResourceDefinition sinifi icin yapilmasidir. En uygun yer global.asax.cs icerisindeki Application_Start olay metodudur(global.asax varsayilan olarak bu proje sablonunda yer almamaktadir. Bir baska deyisle ilave etmeniz gerekmektedir) Bu metod icerigini asagidaki gibi duzenleyerek devam edelim.

using System;
using System.Web.UI;

namespace WebApplication2
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e) 
        {
            ScriptResourceDefinition jQuery = new ScriptResourceDefinition(); 
           jQuery.Path = "~/scripts/jquery-2.0.0.min.js"; 
            jQuery.DebugPath = "~/scripts/jquery-2.0.0.js"; 
            jQuery.CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-2.0.0.min.js";
            jQuery.CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-2.0.0.js";
            ScriptManager.ScriptResourceMapping.AddDefinition("jquery", jQuery); 
        }

}

Bir takim path tanimlamalari yapildigi gorulmektedir. jQuery icin yapilan tanimlamalar haricinde Content Delivery Network(CDN) icin de bazi path bildirimleri belirtilmistir. Senaryo da, Microsoft AJAX CDN_ leri kullanilmaktadir. Ilgili path tanimlamalari ScriptResourceDefinition sinif ornegi icin yapildiktan sonra, ilgili nesne orneginin ScriptResourceMapping ozelligine eklenmesi yeterlidir.

Yeni Bir Test

Uygulamamizi tekrar calistirip test edelim. Bir hata olusmayacak ve dogrulama kontrollerinin calistigi gozlemlenecektir.

Tabi ki bizim icin daha onemli olan istemci tarafina giden kod icerigidir. Eger kaynak koda bakarsak asagidaki sonuclarla karsilasiriz.

Himmm bir terslik var gibi. Sanki buralar da HTML 5_ den hic bir eser yok Disappointed smile 

Bu son derece dogal cunku Web Form_ lar icin bu yeni stil dogrulama isleminin yapilacagini bir yerler de belirtmemiz gerekiyor. web.config dosyasi tahmin edilecegi uzere en uygun yer ve icerigini asagidaki gibi degistirmemiz bu senaryo icin yeterli.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime/>
    <pages controlRenderingCompatibilityVersion="4.0"/>
  </system.web>
  <appSettings> 
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" /> 
  </appSettings> 
</configuration>

appSettings sekmesinde yer alan ValidationSettings:UnobtrusiveValidationMode key degeri, Asp.Net calisma zamani icin anlamlidir. Value niteligine WebForms disinda None degeri de verilebilmektedir. None degerinin verilmesi halinde tahmin edilecegi uzere eski stil dogrulama surecine gecilmektedir. Åžu anki haliyle de yeni stilin kullanilacagi belirtilmektedir.

Bir Test Daha

Oyleyse uygulama tekrardan calistirilir ve istemci tarafina giden kaynak kod icerigine bakilir.

Istedigimiz olmustur ve istemci tarafindaki dogrulama islemleri icin HTML 5 nitelikleri devreye girmistir. Kontrolun bos gecilmemesi icin data-val-evaluationfunction niteliginin degeri ele alinmaktadir. Hangi kontrolun denetlenecegi bilgisi icin data-val-controltovalidate niteligi kullanilmaktadir. Hata mesaji ise data-val-errormessage ile belirtilir vb…

Size tavsiyem diger dogrulama kontrollerini de isin icine katarak senaryoyu genisletmeniz ve ozellikle data-val-evaluationfunction degerlerinin nasil uretildigine bakmaniz yonunde olacaktir.

Kissadan Hisse

Yeni nesil dogrulama stratejisi icin son teknoloji urunudur diyebilir miyiz acaba? Bence evet Winking smile Hem HTML 5_ e hem de jQuery_ ye yatirim yapmis bir dogrulama sureci soz konusu. Ustelik yeni nesil ciktilar da, dogrulama operasyonlari adina Javascript kullanimi(CDATA icerisindeki kisimlar) mevcut degil. Dogrulama bilgisi tamamen HTML 5 icerisine, nitelik-deger(key-value) bazli olarak yikilmis durumda. Elbette bunun en buyuk artisi sayfa cevap boyutunun(Page Response Size) kuculmus olmasi. (Elbette tarayici destegi de onem arz eden bir konu)

Boylece geldik bir makalemizin daha sonuna. Tekrardan gorusunceye dek hepinize mutlu gunler dilerim.

Yazar Hakkında

Burak Selim Şenyurt

Burak Selim Şenyurt

buraksenyurt.com

Yıldız Teknik Üniversitesi Matematik Mühendisliği mezunu olan Şenyurt, 1999 yılında profesyonel olarak adım attığı yazılım dünyasında, 2003 yılından beri Microsoft .Net teknolojileri ile ilgilenmektedir. Yazılım hayatına Assist Line isimli Call Center firmasında Delphi programcısı olarak başlayan Şenyurt sonrasında, sırasıyla Bizitek(Junior Developer), Netron(Master Trainer), Citibank(Outsource Senior Software Developer), Innova(Application Development Consultant), ve TCM(Software Architect) firmalarında görev almıştır. Su anda ING Bank bünyesinde Kıdemli Yazılım Danışmanı olarak görev yapmaktadir. 2006, 2007 yıllarında C#, 2008,2009,2010 yıllarında ise Connected System Developer kategorisinde Microsoft MVP seçilen Şenyurt, evli ve 1 çocuk babasıdır. C# diline olan düşkünlüğü, oğluna S(h)arp adının verilmesinde önemli bir etken olmustur.

Sosyal Medya

ORANLAR

  • 4469izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120172
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65293
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48406
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ