﻿
{"id":256,"date":"2012-03-22T22:44:19","date_gmt":"2012-03-22T22:44:19","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=256"},"modified":"2012-04-19T21:28:11","modified_gmt":"2012-04-19T21:28:11","slug":"asp-net-validation-kontrolleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-validation-kontrolleri\/","title":{"rendered":"Asp.NET Validation Kontrolleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bir web projesinde, kullan\u0131c\u0131dan al\u0131nan bilgilerin eksik veya ge\u00e7ersiz formatta olma durumu s\u00f6z konusu olabilir. Genellikle ileti\u015fim ve kay\u0131t formlar\u0131nda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z bu durumun kontrol\u00fcn\u00fc C# taraf\u0131ndan kontrol edebiliriz.Buda gerekli butona t\u0131kland\u0131\u011f\u0131 vakit, gerekli gereksiz b\u00fct\u00fcn nesnelerin server k\u0131sm\u0131na gidip, orada C# taraf\u0131ndan kontrol edilip geri g\u00f6nderilmesine sebep olacakt\u0131r.Bu y\u00f6ntem b\u00fcy\u00fck \u00f6l\u00e7\u00fcde performans kayb\u0131na sebep olacakt\u0131r.Biz bu kontrolleri client k\u0131sm\u0131ndada javascript ile ger\u00e7ekle\u015ftirebiliriz.Validation kontrolleri client k\u0131sm\u0131nda bu kontrolleri yapmam\u0131z\u0131 sa\u011flarlar.Arka planda JavaScript kodlar\u0131yla \u00e7al\u0131\u015f\u0131rlar.<br \/>\n<!--more--><br \/>\nBir sayfa i\u00e7indeki kontrollerin i\u00e7eri\u011finin bo\u015f olup olmad\u0131\u011f\u0131n\u0131n denetlenmesi server taraf\u0131ndan yap\u0131labilir.Ama yap\u0131lmamal\u0131d\u0131r.\u00c7\u00fcnk\u00fc client, bu kontrollerin i\u00e7eri\u011fini denetleyebilir.Bu denetim sonucu, ba\u015far\u0131l\u0131 ise sayfa servera g\u00f6nderilmeli ve sonraki i\u015flemler yapt\u0131r\u0131lmal\u0131d\u0131r.<br \/>\nClient taraf\u0131ndan yap\u0131lacak olan i\u015flemler JavaScript ile yapt\u0131r\u0131l\u0131r.<\/p>\n<p style=\"text-align: left;\">\u0130lk olarak RequiredFieldValidator nesnesinin ne i\u015fe yarad\u0131\u011f\u0131n\u0131 ve nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 bir sonraki sayfada inceleyelim.<br \/>\n<!--nextpage--><\/p>\n<h3 style=\"text-align: center;\"><strong>RequiredFieldValidator<\/strong><\/h3>\n<p style=\"text-align: left;\">Bu kontrol, kullan\u0131c\u0131dan bilgi al\u0131n\u0131rken gerekli alanlar\u0131n bo\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<br \/>\n<strong>\u00d6zellikleri<\/strong><br \/>\n<strong>Text :<\/strong>Olas\u0131 bir bo\u015f bilgi durumunda \u00e7al\u0131\u015ft\u0131r\u0131lan RequiredFieldValidator nesnesinin,kullan\u0131c\u0131ya g\u00f6sterilecek durum yaz\u0131s\u0131.\u00d6rnek olarak, &#8220;Ad\u0131n\u0131z\u0131 Giriniz.&#8221;<br \/>\nControlToValidate :RequiredFieldValidator nesnemizin kontrol edece\u011fi nesneyi bu \u00f6zellik sayesinde belirtiyoruz.\u00d6rnek olarak, &#8220;txtAdi&#8221;<br \/>\n<strong>ValidationGroup :<\/strong>Birden fazla Button nesnesinin bulundu\u011fu bir sayfada, RequiredFieldValidator nesnelerimizi b\u00fct\u00fcn butonlar tetikleyeceklerdir.Ben B1 butonuna t\u0131kland\u0131\u011f\u0131 zaman RequiredFieldValidator nesnemizin, kendisine ba\u011flanan nesneyi kontrol etmesini isteyebilirim.Ancak B2 butonuna bast\u0131\u011f\u0131m zamanda bu kontrol ger\u00e7ekle\u015fecektir.Yani bir gruplama yap\u0131lmad\u0131\u011f\u0131ndan, sayfa her servera g\u00f6nderilmek istendi\u011finde RequiredFieldValidator nesnemiz devreye girecektir.<br \/>\n\u0130\u015fte b\u00f6yle bir durumda istedi\u011fimiz butonda devreye girmesini istiyorsak bu \u00f6zelli\u011fi kullan\u0131r\u0131z.Sayfada kulland\u0131\u011f\u0131m\u0131z b\u00fct\u00fcn RequiredFieldValidator nesneleri ValidationGroup \u00f6zelli\u011fiyle bir gruba ba\u011flan\u0131r.Ve bu grubu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 istedi\u011fimiz Buttonumuzun ValidationGroup \u00f6zelli\u011finide ayn\u0131 grupba ba\u011flarsak, art\u0131k o saatten sonra o RequiredFieldValidator nesnelerimiz o Button&#8217;a t\u0131kland\u0131\u011f\u0131nda i\u015fleyeceklerdir.<br \/>\n<strong>ErrorMessage :<\/strong>Normalde Text \u00f6zelli\u011fi doluyken olas\u0131 durumda kullan\u0131c\u0131ya g\u00f6sterilecek yaz\u0131 Text \u00f6zelli\u011findeki yaz\u0131 olacakt\u0131r(Text ve ErrorMessage \u00f6zellikleri ayn\u0131 anda dolu olsa bile \u00f6ncelik Text \u00f6zelli\u011finindir.)E\u011fer Text \u00f6zelli\u011fi bo\u015f,ErrorMessage \u00f6zelli\u011fi dolu ise kullan\u0131c\u0131ya ErrorMessage deki yaz\u0131 g\u00f6sterilecektir.Ama as\u0131l amac\u0131 bunlar\u0131n d\u0131\u015f\u0131ndad\u0131r.<br \/>\nYaz\u0131n\u0131n ilerisinde g\u00f6rece\u011fimiz ValidationSummary nesnesinden \u015fimdilik ufak de\u011finmek istiyorum.Baz\u0131 sitelerde kontrol edilen nesnelerde olas\u0131 bir durum oldu\u011fu zaman, nesnelerin yan\u0131nda * i\u015fareti g\u00f6z\u00fck\u00fcp, sayfan\u0131n belirli bir k\u0131sm\u0131ndada o alanlarla ilgili mesajlar g\u00f6z\u00fckmektedir.Mesela Ad ve Soyad k\u0131s\u0131mlar\u0131 doldurulmay\u0131p, sadece Sifre k\u0131sm\u0131 dolduruldu\u011fu zaman, Ad ve Soyad k\u0131s\u0131mlar\u0131n\u0131n yan\u0131nda * \u00e7\u0131kacak,Sifre de \u00e7\u0131kmayacakt\u0131r.Ve belirlenen bir b\u00f6l\u00fcmde,topluca Ad ve Soyad b\u00f6l\u00fcmlerinin girilmesiyle ilgili mesajlar verilecektir.<br \/>\n\u0130\u015fte bu \u015fekilde bir \u00e7al\u0131\u015fmay\u0131 ValidationSummary kontrol\u00fc ile yapmak mevcuttur.<br \/>\nRequiredFieldValidator nesnemizin Text k\u0131sm\u0131ndaki mesaj(genellikle ValidationSummary kullan\u0131l\u0131rken * konulur) RequiredFieldValidator nesnemizde g\u00f6z\u00fckecek,ErrorMassage k\u0131sm\u0131ndaki mesajda ValidationSummary nesnesinde g\u00f6z\u00fckecektir.<\/p>\n<p>\u015eimdi ise CompareValidator kontrol\u00fcn\u00fc di\u011fer sayfada inceleyece\u011fiz.<br \/>\n<!--nextpage--><\/p>\n<h3 style=\"text-align: center;\"><strong>CompareValidator<\/strong><\/h3>\n<p>Bir kontrol ile ba\u015fka bir kontrol i\u00e7eri\u011fini kar\u015f\u0131la\u015ft\u0131r\u0131r.Ayn\u0131 zamanda bir kontrol i\u00e7eri\u011fi ile herhangi bir de\u011feri de kar\u015f\u0131la\u015ft\u0131rabilir.<br \/>\n<strong>\u00d6zellikleri<\/strong><br \/>\n<strong>ControlToCompare :<\/strong>Kar\u015f\u0131la\u015fman\u0131n yap\u0131laca\u011f\u0131 kontrol belirlenir.<br \/>\n<strong>ControlToValidate :<\/strong>Kar\u015f\u0131la\u015fman\u0131n yap\u0131laca\u011f\u0131 di\u011fer kontrol belirlenir.<br \/>\n<strong>Text :<\/strong>Kar\u015f\u0131la\u015fma sonucu olas\u0131 hata durumunda kullan\u0131c\u0131ya g\u00f6sterilecek uyar\u0131 mesaj\u0131.<br \/>\n<strong>Type :<\/strong>Kar\u015f\u0131la\u015fma yap\u0131lacak verilerin tiplerini bu Type \u00f6zelli\u011fi sayesinde belirleyebiliriz.\u00d6rnek olarak int t\u00fcr\u00fcnde kar\u015f\u0131la\u015ft\u0131rma yapacaksak, iki kontrole &#8220;Ahmet&#8221; kelimesini yazsak dahi kar\u015f\u0131la\u015fma olumlu olmayacakt\u0131r.Kar\u015f\u0131la\u015ft\u0131rma int t\u00fcr\u00fcnden olacaksa, kar\u015f\u0131la\u015ft\u0131r\u0131lan verilerde int t\u00fcr\u00fcnden olacakt\u0131r(di\u011fer t\u00fcrler i\u00e7inde ge\u00e7erlidir)<br \/>\n<strong>Operator :<\/strong>Kar\u015f\u0131la\u015ft\u0131rma bi\u00e7imini belirleriz.E\u015fit mi?,b\u00fcy\u00fck m\u00fc?,k\u00fc\u00e7\u00fck m\u00fc? vs..<br \/>\n<strong>ValueToCompare :<\/strong>E\u011fer kar\u015f\u0131la\u015ft\u0131rma i\u015flemi,kontrol\u00fcm\u00fcze girilen de\u011ferle ve sabit bir veriyle yapt\u0131racaksak bu \u00f6zellik kullan\u0131l\u0131r.<br \/>\n<strong>ErrorMessage :<\/strong>ValidationGroup nesnesinde g\u00f6z\u00fckecek mesaj\u0131 saklar.<br \/>\n<strong>ValidationGroup\u00a0:<\/strong>Birden fazla Button nesnesinin bulundu\u011fu bir sayfada, RequiredFieldValidator nesnelerimizi b\u00fct\u00fcn butonlar tetikleyeceklerdir.Ben B1 butonuna t\u0131kland\u0131\u011f\u0131 zaman RequiredFieldValidator nesnemizin, kendisine ba\u011flanan nesneyi kontrol etmesini isteyebilirim.Ancak B2 butonuna bast\u0131\u011f\u0131m zamanda bu kontrol ger\u00e7ekle\u015fecektir.Yani bir gruplama yap\u0131lmad\u0131\u011f\u0131ndan, sayfa her servera g\u00f6nderilmek istendi\u011finde RequiredFieldValidator nesnemiz devreye girecektir.<br \/>\n\u0130\u015fte b\u00f6yle bir durumda istedi\u011fimiz butonda devreye girmesini istiyorsak bu \u00f6zelli\u011fi kullan\u0131r\u0131z.Sayfada kulland\u0131\u011f\u0131m\u0131z b\u00fct\u00fcn RequiredFieldValidator nesneleri ValidationGroup \u00f6zelli\u011fiyle bir gruba ba\u011flan\u0131r.Ve bu grubu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 istedi\u011fimiz Buttonumuzun ValidationGroup \u00f6zelli\u011finide ayn\u0131 grupba ba\u011flarsak, art\u0131k o saatten sonra o RequiredFieldValidator nesnelerimiz o Button&#8217;a t\u0131kland\u0131\u011f\u0131nda i\u015fleyeceklerdir.<\/p>\n<p>\u015eimdi ise RegularExpressionValidator kontrol\u00fcn\u00fc di\u011fer sayfada inceleyece\u011fiz.<br \/>\n<!--nextpage--><\/p>\n<h3 style=\"text-align: center;\"><strong>RegularExpressionValidator<\/strong><\/h3>\n<p>Bir kontrol\u00fcn i\u00e7eri\u011finin belli bir formata(\u00f6rne\u011fin e-mail format\u0131) g\u00f6re uyup uymad\u0131\u011f\u0131n\u0131 denetler.<br \/>\n<strong>\u00d6zellikleri<\/strong><br \/>\n<strong>ControlToValidate :<\/strong>Kontrol edilecek nesneyi buradan veriyoruz.<br \/>\n<strong>ErrorMessage :<\/strong>ValidationGroup nesnesinde g\u00f6z\u00fckecek mesaj\u0131 saklar.<br \/>\n<strong>ValidationExpression :<\/strong>Hangi formatta kontrol ettirmek istiyorsak bu \u00f6zelli\u011fi kullan\u0131yoruz.<br \/>\n<span style=\"font-size: small; font-family: terminal, monaco;\"> <a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/ValidationExpression.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-306\" title=\"ValidationExpression\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/ValidationExpression.jpg\" alt=\"\" width=\"351\" height=\"239\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/ValidationExpression.jpg 351w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/03\/ValidationExpression-300x204.jpg 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/a><\/span><\/p>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi RegularExpressionValidator nesnesinin kontrol etti\u011fi nesneyi hangi formatta kontrol edece\u011fini yukar\u0131daki listeden se\u00e7iyoruz.Validation expression adl\u0131 k\u0131s\u0131mda se\u00e7ti\u011fimiz format\u0131n kod kar\u015f\u0131l\u0131\u011f\u0131 g\u00f6z\u00fckmektedir.Asl\u0131nda ValidationExpression \u00f6zelli\u011fine verilen de\u011ferde bu kod olmaktad\u0131r.<\/p>\n<p>\u015eunuda belirtmek istiyorum ValidationExpression daki haz\u0131r telefon numaralar\u0131, T\u00fcrkiye telefon numaralar\u0131 standard\u0131na uygun de\u011fildir.Biz Regular Expression T\u00fcrk\u00e7e telefon format\u0131n\u0131 bulup, listeden &#8220;Custom&#8221; se\u00e7ip, bo\u015f Validation expression k\u0131sm\u0131na elimizle yap\u0131\u015ft\u0131rmam\u0131z laz\u0131md\u0131r.Bu arama i\u015flemini internetten yapabilirsiniz.<\/p>\n<p>Regular Expression kodlar\u0131n\u0131n nas\u0131l yaz\u0131ld\u0131\u011f\u0131yla ilgili bir yaz\u0131m olmayacakt\u0131r.Do\u011frusu bende bilmiyorum.Ancak \u00f6\u011frenmek istiyorsan\u0131z\u00a0<a href=\"http:\/\/www.csharpnedir.com\/articles\/read\/?id=129\" class=\"broken_link\">http:\/\/www.csharpnedir.com\/articles\/read\/?id=129<\/a>\u00a0adresindeki makaleye g\u00f6z atabilirsiniz.<\/p>\n<p>\u015eimdi ise RangeValidator kontrol\u00fcn\u00fc di\u011fer sayfada inceleyece\u011fiz.<br \/>\n<!--nextpage--><\/p>\n<h3 style=\"text-align: center;\"><strong>RangeValidator<\/strong><\/h3>\n<p>Bir kontrol i\u00e7eri\u011finin belli aral\u0131klarda olup olmad\u0131\u011f\u0131n\u0131 denetler.<br \/>\n<strong>\u00d6zellikleri<\/strong><br \/>\n<strong>ControlToValidate :<\/strong>\u0130\u00e7eri\u011fi kontrol edilecek nesneyi giriyoruz.<br \/>\n<strong>Type :<\/strong>Hangi tipte kontrol edilmesini istiyorsak buradan ayarl\u0131yoruz.<br \/>\n<strong>MinumumValue :<\/strong>Minumum de\u011fer.<br \/>\n<strong>MaximumValue :<\/strong>Maximum de\u011fer.<\/p>\n<p>\u015eimdi ise ValidationSummary kontrol\u00fcn\u00fc di\u011fer sayfada inceleyece\u011fiz.<br \/>\n<!--nextpage--><\/p>\n<h3 style=\"text-align: center;\"><strong>ValidationSummary<\/strong><\/h3>\n<p>Validation kontrollerinin ErrorMassage \u00f6zelliklerinin g\u00f6sterildi\u011fi aland\u0131r.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bir web projesinde, kullan\u0131c\u0131dan al\u0131nan bilgilerin eksik veya ge\u00e7ersiz formatta olma durumu s\u00f6z konusu olabilir. Genellikle ileti\u015fim ve kay\u0131t formlar\u0131nda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z bu durumun kontrol\u00fcn\u00fc C# taraf\u0131ndan kontrol edebiliriz.Buda gerekli butona t\u0131kland\u0131\u011f\u0131 vakit, gerekli gereksiz&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[179],"class_list":["post-256","post","type-post","status-publish","format-standard","hentry","category-asp-net","tag-validation"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=256"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/256\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}