﻿
{"id":1085,"date":"2012-12-07T00:08:43","date_gmt":"2012-12-07T00:08:43","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1085"},"modified":"2012-12-07T00:08:43","modified_gmt":"2012-12-07T00:08:43","slug":"mvc-validation","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/mvc-validation\/","title":{"rendered":"MVC Validation"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Web projelerimizde baz\u0131 durumlar i\u00e7in Client tabanl\u0131 \u00f6nlemler almak isteyebiliriz.G\u00fcnl\u00fck hayatta kulland\u0131\u011f\u0131m\u0131z internet teknolojisinde, bireysel bilgiler \u00fczerinden i\u015flemlerimizi ger\u00e7ekle\u015ftiriyoruz.Bazen e-posta adresimizi, bazen vatanda\u015fl\u0131k numaram\u0131z\u0131 vb.. internetteki i\u015flemin talebi sonucunda kullan\u0131ma tabii tutuyoruz.Bu gibi \u00f6nem te\u015fkil eden bilgilerin do\u011fruluk derecelerini onaylamadan i\u015flem yapan bir Web projesi sa\u011fl\u0131kl\u0131 sonu\u00e7lar \u00fcretmemektedir.Biz bu gibi durumlarda Client tabanl\u0131 olarak Asp.NET Validation kontrollerine ba\u015f vururduk.Ancak \u015fimdi MVC&#8217;de Model katman\u0131nda Validation i\u015flemleri nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<br \/>\n<!--more--><br \/>\nAsp.NET MVC&#8217;de, klasik Asp.NET Web Forms&#8217;lardaki Validation kontrollerini istesek kullanabiliriz.Ancak MVC&#8217;de sayfam\u0131z\u0131n html kod k\u0131sm\u0131nda html kontrolleriyle \u00e7al\u0131\u015fabildi\u011fimizden dolay\u0131, Controller katman\u0131nda olu\u015fturaca\u011f\u0131m\u0131z i\u015flemler sonucunda Validation yap\u0131s\u0131n\u0131 kullanaca\u011f\u0131z.<\/p>\n<p>\u015eimdi, herhangi bir isimde Asp.NET MVC projesi olu\u015fturup mevzuya girelim.<br \/>\n\u00d6ncelikle, &#8220;DenemeDatabase&#8221; ad\u0131nda bir veritaban\u0131m\u0131z oldu\u011funu varsayal\u0131m ve bu veritaban\u0131nda &#8220;Kategoriler&#8221; ad\u0131ndaki bir tabloda a\u015fa\u011f\u0131daki gibi kolonlar oldu\u011funu d\u00fc\u015f\u00fcnelim..<\/p>\n<table style=\"width: 50px;\" align=\"center\">\n<tbody>\n<tr>\n<td><strong>Kategoriler<\/strong><\/td>\n<\/tr>\n<tr>\n<td>ID<\/td>\n<\/tr>\n<tr>\n<td>KategoriAdi<\/td>\n<\/tr>\n<tr>\n<td>KategoriAciklamasi<\/td>\n<\/tr>\n<tr>\n<td>KategoriElemanlari<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu tablonun Model katman\u0131nda bir modelini olu\u015ftural\u0131m.&#8221;Kategori.cs&#8221; isimli sayfada olu\u015fturuyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Kategori.cs---\r\n    public class Kategori\r\n    {\r\n        public int ID { get; set; }\r\n        public string KategoriAdi { get; set; }\r\n        public string KategoriAciklamasi { get; set; }\r\n        public string KategoriElemanlari { get; set; }\r\n    }\r\n<\/pre>\n<p>\u015eimdi ise, Controller katman\u0131m\u0131zda &#8220;Kategori(Controller)&#8221; ad\u0131nda bir s\u0131n\u0131f olu\u015ftural\u0131m.Bu s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015ftururken, Create,Delete,Details ve Update metodlar\u0131n\u0131 olu\u015fturtal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---KategoriController.cs---\r\n    public class KategoriController : Controller\r\n    {\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n\r\n        public ActionResult Details(int id)\r\n        {\r\n            return View();\r\n        }\r\n\r\n        public ActionResult Create()\r\n        {\r\n            Kategori YeniKategori = new Kategori();\r\n            return View(YeniKategori);\r\n        }\r\n\r\n        &#x5B;HttpPost]\r\n        public ActionResult Create(FormCollection collection)\r\n        {\r\n            try\r\n            {\r\n                return RedirectToAction(&quot;Index&quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n\r\n        public ActionResult Edit(int id)\r\n        {\r\n            return View();\r\n        }\r\n\r\n        &#x5B;HttpPost]\r\n        public ActionResult Edit(int id, FormCollection collection)\r\n        {\r\n            try\r\n            {\r\n                return RedirectToAction(&quot;Index&quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n\r\n        public ActionResult Delete(int id)\r\n        {\r\n            return View();\r\n        }\r\n\r\n        &#x5B;HttpPost]\r\n        public ActionResult Delete(int id, FormCollection collection)\r\n        {\r\n            try\r\n            {\r\n                return RedirectToAction(&quot;Index&quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>&#8220;Kategori(Controller)&#8221; ad\u0131ndaki Controller s\u0131n\u0131f\u0131m\u0131z\u0131n sadece, &#8220;Create&#8221; ad\u0131ndaki metodunun View katman\u0131nda dosyas\u0131n\u0131 olu\u015ftural\u0131m.&#8221;Create&#8221; metoduna sa\u011f t\u0131klayarak &#8220;Add View&#8221; diyelim.Burada dikkat etmemiz gereken nokta, &#8220;View content&#8221; men\u00fcs\u00fcnden &#8220;Create&#8221; se\u00e7ene\u011fini se\u00e7memiz gerekiyor.<\/p>\n<p>View katman\u0131nda, &#8220;Kategori&#8221; ismindeki klas\u00f6r\u00fcn alt\u0131nda olu\u015fan &#8220;Create.aspx&#8221; isimli sayfan\u0131n kaynak kodlar\u0131 a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Create.aspx---\r\n&lt;%@ Page Title=&quot;&quot; Language=&quot;C#&quot; MasterPageFile=&quot;~\/Views\/Shared\/Site.Master&quot; Inherits=&quot;System.Web.Mvc.ViewPage&lt;MvcApplication9.Models.Kategori&gt;&quot; %&gt;\r\n&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;TitleContent&quot; runat=&quot;server&quot;&gt;\r\n\tCreate\r\n&lt;\/asp:Content&gt;\r\n&lt;asp:Content ID=&quot;Content2&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;\r\n    &lt;h2&gt;Create&lt;\/h2&gt;\r\n    &lt;% using (Html.BeginForm()) {%&gt;\r\n        &lt;%: Html.ValidationSummary(true) %&gt;\r\n        &lt;fieldset&gt;\r\n            &lt;legend&gt;Fields&lt;\/legend&gt;\r\n            &lt;div class=&quot;editor-label&quot;&gt;\r\n                &lt;%: Html.LabelFor(model =&gt; model.ID) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-field&quot;&gt;\r\n                &lt;%: Html.TextBoxFor(model =&gt; model.ID) %&gt;\r\n                &lt;%: Html.ValidationMessageFor(model =&gt; model.ID) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-label&quot;&gt;\r\n                &lt;%: Html.LabelFor(model =&gt; model.KategoriAdi) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-field&quot;&gt;\r\n                &lt;%: Html.TextBoxFor(model =&gt; model.KategoriAdi) %&gt;\r\n                &lt;%: Html.ValidationMessageFor(model =&gt; model.KategoriAdi) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-label&quot;&gt;\r\n                &lt;%: Html.LabelFor(model =&gt; model.KategoriAciklamasi) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-field&quot;&gt;\r\n                &lt;%: Html.TextBoxFor(model =&gt; model.KategoriAciklamasi) %&gt;\r\n                &lt;%: Html.ValidationMessageFor(model =&gt; model.KategoriAciklamasi) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-label&quot;&gt;\r\n                &lt;%: Html.LabelFor(model =&gt; model.KategoriElemanlari) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;div class=&quot;editor-field&quot;&gt;\r\n                &lt;%: Html.TextBoxFor(model =&gt; model.KategoriElemanlari) %&gt;\r\n                &lt;%: Html.ValidationMessageFor(model =&gt; model.KategoriElemanlari) %&gt;\r\n            &lt;\/div&gt;\r\n            &lt;p&gt;\r\n                &lt;input type=&quot;submit&quot; value=&quot;Create&quot; \/&gt;\r\n            &lt;\/p&gt;\r\n        &lt;\/fieldset&gt;\r\n    &lt;% } %&gt;\r\n    &lt;div&gt;\r\n        &lt;%: Html.ActionLink(&quot;Back to List&quot;, &quot;Index&quot;) %&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/asp:Content&gt;\r\n<\/pre>\n<p>E\u011fer, projemizi \u00e7al\u0131\u015ft\u0131r\u0131p &#8220;Kategori(Controller)&#8221; isimli Controller&#8217;\u0131m\u0131zdaki &#8220;Create&#8221; isimli ActionResult tipinden olan metodumuzu \u00e7a\u011f\u0131r\u0131rsak kar\u015f\u0131m\u0131za a\u015fa\u011f\u0131daki gibi ekran gelecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1092\" title=\"validation\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation.png\" alt=\"\" width=\"283\" height=\"411\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation.png 283w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation-206x300.png 206w\" sizes=\"auto, (max-width: 283px) 100vw, 283px\" \/><\/a><br \/>\nYukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcne dikkat edersek e\u011fer,<br \/>\n<span style=\"color: #ff0000;\">K\u0131rm\u0131z\u0131 olarak i\u015faretlenmi\u015f, &#8220;A&#8221; harfi ile sembolize etti\u011fim alan \u00a0Create.aspx sayfas\u0131n\u0131n html kodlar\u0131nda &#8220;<strong><span style=\"font-size: x-small;\"> &lt;%: Html.LabelFor(model =&gt; model.ID) %&gt;<\/span><\/strong>&#8221; alan\u0131nda yazd\u0131r\u0131lmaktad\u0131r.Model katman\u0131m\u0131zdaki, &#8220;Kategori&#8221; isimli s\u0131n\u0131f\u0131m\u0131zda bulunan &#8220;ID&#8221; isimli propertynin direkt olarak property name ini yazm\u0131\u015ft\u0131r.Validation ile buraya istedi\u011fimiz ismi verece\u011fiz.<\/span><\/p>\n<p><span style=\"color: #339966;\">Ye\u015fil olarak i\u015faretlenmi\u015f, &#8220;B&#8221; harfi ile sembolize etti\u011fim alan Create .aspx sayfas\u0131n\u0131n html kodlar\u0131nda &#8221;\u00a0<strong><span style=\"font-size: x-small;\">&lt;%: Html.TextBoxFor(model =&gt; model.ID) %&gt;<\/span><\/strong>&#8221; alan\u0131nda yazd\u0131r\u0131lmaktad\u0131r.Mesela yeni bir kategori ekleme i\u015flemi yapaca\u011f\u0131m\u0131z i\u00e7in, &#8220;ID&#8221; de\u011ferini biz manuel olarak de\u011filde, primary key olarak otomatik att\u0131rmam\u0131z daha mant\u0131kl\u0131 gelmektedir.O halde, buradaki TextBox nesnesinin sadece okunabilir \u00f6zellikte olmas\u0131 gerekmektedir.Bunuda Validation ile sa\u011flayaca\u011f\u0131z.<\/span><\/p>\n<p><span style=\"color: #ffff00;\">Sar\u0131 olarak \u0130\u015faretlenmi\u015f, &#8220;C&#8221; harfi ile sembolize etti\u011fim alan Craete.aspx sayfas\u0131n\u0131n html kodlar\u0131nda &#8220;<strong><span style=\"font-size: x-small;\">&lt;%: Html.TextBoxFor(model =&gt; model.KategoriAdi) %&gt;<\/span><\/strong>&#8221; alan\u0131nda yazd\u0131r\u0131lmaktad\u0131r.Burada da, istedi\u011fimiz gibi bo\u015f kontrol\u00fc veya herhangi bir de\u011ferle kar\u015f\u0131la\u015ft\u0131rma kontrol\u00fc yapabiliriz.Ayn\u0131 \u015fekilde bunuda Validation kontrolleri ile sa\u011flayaca\u011f\u0131z.<\/span><\/p>\n<p>Art\u0131k mevzuya girme zaman\u0131 geldi.Create.aspx sayfas\u0131nda de\u011fi\u015ftirilebilir olarak ayarlad\u0131\u011f\u0131m\u0131z ve Create i\u015flemi sonucunda post edilebilecek olan alanlar, &#8220;ID&#8221;,&#8221;KategoriAdi&#8221;,&#8221;KategoriAciklamasi&#8221; ve &#8220;KategoriElemanlar\u0131&#8221; oldu\u011fundan dolay\u0131, Model katman\u0131nda bulunan &#8220;Kategori&#8221; s\u0131n\u0131f\u0131 \u00fczerinde bir attribute tan\u0131mlayarak bu alanlar\u0131 bind edece\u011fim.<\/p>\n<p>System.Web.Mvc namespacei i\u00e7inde bulunan, attribute a\u015fa\u011f\u0131daki gibi &#8220;Kategori&#8221; s\u0131n\u0131f\u0131na eklenecektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Bind(Include=&quot;ID,KategoriAdi,KategoriAciklamasi,KategoriElemanlari&quot;)]\r\n    public class Kategori\r\n    {\r\n        public int ID { get; set; }\r\n        public string KategoriAdi { get; set; }\r\n        public string KategoriAciklamasi { get; set; }\r\n        public string KategoriElemanlari { get; set; }\r\n    }\r\n<\/pre>\n<p>E\u011fer, burada herhangi bir property ismini yazmazsak, o property Validation i\u015flemine tabii tutulmayacakt\u0131r.<br \/>\n\u015eimdi haliyle, Validation kurallar\u0131n\u0131n koyulaca\u011f\u0131 s\u0131n\u0131f\u0131 bu &#8220;Kategori&#8221; s\u0131n\u0131f\u0131na belirtmemiz gerekiyor.Bunun i\u00e7in bir tane daha attribute eklenecektir.<\/p>\n<p>System.ComponentModel.DataAnnotations namespacei i\u00e7inde bulunan, attribute a\u015fa\u011f\u0131daki gibi &#8220;Kategori&#8221; s\u0131n\u0131f\u0131na eklecektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Bind(Include=&quot;ID,KategoriAdi,KategoriAciklamasi,KategoriElemanlari&quot;)]\r\n    &#x5B;MetadataType(typeof(Validation_Kontrol))]\r\n    public class Kategori\r\n    {\r\n        public int ID { get; set; }\r\n        public string KategoriAdi { get; set; }\r\n        public string KategoriAciklamasi { get; set; }\r\n        public string KategoriElemanlari { get; set; }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, &#8220;<span style=\"font-size: x-small;\"><strong>[MetadataType(typeof(Validation_Kontrol))]<\/strong><\/span>&#8221; ad\u0131ndaki attribute ile &#8220;Kategori&#8221; s\u0131n\u0131f\u0131nda yap\u0131lacak Validation komutlar\u0131n\u0131 &#8220;Validation_Kontrol&#8221; isimli s\u0131n\u0131fta olu\u015fturabilece\u011fiz.<\/p>\n<p>Ben projeye, &#8220;Class&#8221; ad\u0131nda bir klas\u00f6r ekledim ve i\u00e7ine &#8220;Validation_Kontrol&#8221; isminde bir s\u0131n\u0131f ekledim.Art\u0131k Validation komutlar\u0131m\u0131 bu s\u0131n\u0131f i\u00e7inde olu\u015fturabilirim.<\/p>\n<p>\u015eimdi, mant\u0131ksal ak\u0131\u015f \u015femas\u0131n\u0131 sizlere a\u00e7\u0131klamak istiyorum.&#8221;Kategori(Controller)&#8221; ismindeki Controller s\u0131n\u0131f\u0131nda bulunan &#8220;Create&#8221; isimli metodumuz \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 zaman, bir &#8220;Kategori&#8221; tipinden nesne \u00fcretilecektir.Bu nesne \u00fcretilirken, &#8220;<strong><span style=\"font-size: x-small;\">[MetadataType(typeof(Validation_Kontrol))]<\/span><\/strong>&#8221; attribute u, \u00e7al\u0131\u015facakt\u0131r ve &#8220;Validation_Kontrol&#8221; ad\u0131ndaki s\u0131n\u0131fa gidecektir.<\/p>\n<p>&#8220;Validation_Kontrol&#8221; s\u0131n\u0131f\u0131na geldikten sonra, Bind edilen propertyler ile ilgili \u00f6zellikler verilmi\u015f mi, verilmemi\u015f mi onlar\u0131 kontrol etmektedir.<\/p>\n<p>\u015eimdi &#8220;Validation_Kontrol&#8221; isimli s\u0131n\u0131f\u0131m\u0131z\u0131n kodlar\u0131n\u0131 yazal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Validation_Kontrol\r\n    {\r\n        &#x5B;DisplayName(&quot;Kategori ID&quot;)]\r\n        \/\/Bu attribute art\u0131k property ismini de\u011fil, &quot;Kategori ID&quot; ismini g\u00f6sterecektir.\r\n        &#x5B;Required(ErrorMessage=&quot;L\u00fctfen bo\u015f ge\u00e7meyiniz.&quot;]\r\n        \/\/Bu attribute sayesinde bu property bo\u015f ge\u00e7ilemez.E\u011fer bo\u015f olarak Post i\u015flemi yap\u0131l\u0131rsa, &quot;L\u00fctfen bo\u015f ge\u00e7meyiniz.&quot; diye uyar\u0131 verecektir.\r\n        public int ID { get; set; }\r\n\r\n        &#x5B;DisplayName(&quot;Kategori Ad\u0131&quot;)]\r\n        &#x5B;Required(ErrorMessage=&quot;L\u00fctfen kategori ad\u0131 giriniz&quot;)]\r\n        &#x5B;StringLength(100,ErrorMessage=&quot;Kategori ad\u0131 100 karakterden fazla olamaz.&quot;)]\r\n        \/\/Bu attribute sayesinde, bu propertye maximum 100 karakter girilebilece\u011fini g\u00f6steriyoruz.E\u011fer 100 karakteri ge\u00e7erse, &quot;Kategori ad\u0131 100 karakterden fazla olamaz&quot; diye uyar\u0131 verecektir.\r\n        public string KategoriAdi { get; set; }\r\n\r\n        &#x5B;DisplayName(&quot;Kategori A\u00e7\u0131klamas\u0131&quot;)]\r\n        &#x5B;StringLength(250,ErrorMessage=&quot;Kategori a\u00e7\u0131klamas\u0131 250 karakterden fazla olamaz.&quot;)]\r\n        public string KategoriAciklamasi { get; set; }\r\n\r\n        &#x5B;DisplayName(&quot;Kategori Eleman Say\u0131s\u0131&quot;)]\r\n        public string KategoriElemanlari { get; set; }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, &#8220;Validation_Kontrol&#8221; isimli s\u0131n\u0131f\u0131m\u0131zda Validation kontrollerini yapm\u0131\u015f bulunmaktay\u0131z.\u015eimdi projemizi \u00e7al\u0131\u015ft\u0131r\u0131p, Create Action&#8217;\u0131n\u0131 talep edersek e\u011fer, a\u015fa\u011f\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, property isimleri yerine &#8220;DisplayName&#8221; attribute undaki isimler gelmi\u015ftir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1099\" title=\"validation2\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation2.png\" alt=\"\" width=\"240\" height=\"324\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation2.png 240w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation2-222x300.png 222w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/a><\/p>\n<p>Ancak, yukar\u0131da yapt\u0131\u011f\u0131m\u0131z kontrollerin aksine TextBox nesnelerini doldurursak ve bo\u015f b\u0131rak\u0131rsak, Create butonuyla Post i\u015flemi yapt\u0131ktan sonra, an\u0131nda Client tabanl\u0131 bir g\u00fcvenlikten ziyade, Post i\u015flemimizi kabul edecektir.<\/p>\n<p>Bunun sebebi, &#8220;Kategori(Controller)&#8221; ismindeki Controller s\u0131n\u0131f\u0131m\u0131zda kontrol yapmad\u0131k.Kal\u0131b\u0131m\u0131z belli ama kontrol\u00fcm\u00fcz yok \ud83d\ude42<\/p>\n<p>\u00d6ncelikle, &#8220;Kategori(Controller)&#8221; s\u0131n\u0131f\u0131m\u0131za gelip, &#8220;Create&#8221; metodunun 2. overload\u0131na(<span style=\"font-size: x-small;\">Post i\u015flemi sonras\u0131nda \u00e7al\u0131\u015facak olan\u0131na<\/span>) a\u015fa\u011f\u0131daki gibi bir kontrol sa\u011fl\u0131yoruz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;HttpPost]\r\n        public ActionResult Create(Kategori GelenKategori)\r\n        {\r\n            try\r\n            {\r\n                if (!ModelState.IsValid)\r\n                {\r\n                    return View(GelenKategori);\r\n                }\r\n                return RedirectToAction(&quot;Index&quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n<\/pre>\n<p>Burada ModelState.IsValid ile, Model katman\u0131nda &#8220;Kategori&#8221; s\u0131n\u0131f\u0131m\u0131zda ald\u0131\u011f\u0131m\u0131z Validation \u00f6nlemlerini kontrol etmekte ve geriye bool tipinden de\u011fer d\u00f6nmektedir.E\u011fer, Validation i\u015flemlerinde ge\u00e7erli durum s\u00f6z konusuysa, bize true d\u00f6necektir.Yani bu durumda b\u00fct\u00fcn \u015fartlar\u0131m\u0131z do\u011fru olaca\u011f\u0131ndan dolay\u0131, Post i\u015flemi ger\u00e7ekle\u015fmelidir.Ha yok e\u011fer, Validation i\u015flemlerin ge\u00e7ersiz durum varsa False d\u00f6necektir ve Post i\u015flemi olmayacakt\u0131r.Bu durumda, \u00f6nceden Create overload\u0131nda olu\u015fturulan Kategori nesnesi, buradaki GelenKategori parametresinde tutulaca\u011f\u0131ndan dolay\u0131, geri View katman\u0131na g\u00f6nderilecektir.<\/p>\n<p>E\u011fer projemizi \u00e7al\u0131\u015ft\u0131r\u0131p, Post i\u015flemini denersek, Validation i\u015flemlerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rece\u011fiz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1100\" title=\"validation3\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation3.png\" alt=\"\" width=\"518\" height=\"158\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation3.png 518w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/validation3-300x91.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><br \/>\nYukar\u0131daki g\u00f6r\u00fcnt\u00fcde, k\u0131rm\u0131z\u0131 yaz\u0131larla gelen uyar\u0131 yaz\u0131lar\u0131m\u0131z ise, Create.aspx sayfas\u0131n\u0131n kaynak kodundaki &#8220;<strong><span style=\"font-size: x-small;\">&lt;%: Html.ValidationMessageFor(model =&gt; model.ID) %&gt;<\/span><\/strong>&#8221; alan\u0131ndan gelmektedir.<\/p>\n<p>Bu yaz\u0131m\u0131zda da, MVC&#8217;de Validation i\u015flemlerine giri\u015f yapm\u0131\u015f olduk.Umar\u0131m detayl\u0131 bir bi\u00e7imde konuyu ele alm\u0131\u015f\u0131zd\u0131r.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar..<\/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>Web projelerimizde baz\u0131 durumlar i\u00e7in Client tabanl\u0131 \u00f6nlemler almak isteyebiliriz.G\u00fcnl\u00fck hayatta kulland\u0131\u011f\u0131m\u0131z internet teknolojisinde, bireysel bilgiler \u00fczerinden i\u015flemlerimizi ger\u00e7ekle\u015ftiriyoruz.Bazen e-posta adresimizi, bazen vatanda\u015fl\u0131k numaram\u0131z\u0131 vb.. internetteki i\u015flemin talebi sonucunda kullan\u0131ma tabii tutuyoruz.Bu gibi \u00f6nem&#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":[11],"tags":[746,283,179],"class_list":["post-1085","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","tag-asp-net-mvc","tag-mvc","tag-validation"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1085","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=1085"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1085\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}