﻿
{"id":1068,"date":"2012-12-03T01:51:05","date_gmt":"2012-12-03T01:51:05","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1068"},"modified":"2019-02-08T21:21:59","modified_gmt":"2019-02-08T21:21:59","slug":"mvcde-edit-metodu","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/mvcde-edit-metodu\/","title":{"rendered":"MVC&#8217;de Edit Metodu"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bir \u00f6nceki, MVC\u2019de Create Metodu ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda Create metodunu inceledik ve bu metod sayesinde ekleme i\u015flemini g\u00f6rd\u00fck.Bu yaz\u0131m\u0131zda ise, Edit metodu sayesinde d\u00fczenleme i\u015flemini g\u00f6rece\u011fiz.<br \/>\n<!--more--><br \/>\n<span style=\"font-size: x-small;\"><strong>Dikkat !!!<\/strong><\/span><br \/>\n<span style=\"font-size: xx-small;\"><strong>Bu yaz\u0131m\u0131z\u0131 anlaman\u0131z i\u00e7in bir \u00f6nceki yaz\u0131m\u0131z\u0131 detayl\u0131 bir bi\u00e7imde okuman\u0131z gerekmektedir.Yaz\u0131 dizisi olu\u015fturdu\u011fumdan dolay\u0131, bir yaz\u0131 \u00f6nceki ve sonrakiyle ba\u011flant\u0131l\u0131 \u015fekilde \u00f6rneklendirilmi\u015ftir.<\/strong><\/span><\/p>\n<p>Yaz\u0131 dizimizi kronolojik olarak takip ediyorsan\u0131z e\u011fer, an\u0131msayacaks\u0131n\u0131z ki, Ogrenci tipinden olan nesnelerimizi listelettikten sonra en son olarak Create metoduyla bu listeye ekleme i\u015flemi yapm\u0131\u015ft\u0131k.\u015eimdi ayn\u0131 projeyi a\u00e7\u0131p, Controller katman\u0131ndaki &#8220;Ogrenci(Controller)&#8221; ismindeki s\u0131n\u0131f\u0131m\u0131zda bulunan ActionResult tipindeki &#8220;Edit&#8221; metodumuzu bir inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/1.Metod\r\n        public ActionResult Edit(int id)\r\n        {\r\n            return View();\r\n        }\r\n\/\/2.Metod\r\n        &#x5B;HttpPost]\r\n        public ActionResult Edit(int id, FormCollection collection)\r\n        {\r\n            try\r\n            {\r\n                return RedirectToAction(&amp;quot;Index&amp;quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, Edit metodunun iki Overload\u0131 mevcut.\u00d6nceki yaz\u0131m\u0131zda da Create metodu bu \u015fekilde iki overloaddan olu\u015fuyordu.Ayn\u0131 mant\u0131kla, 1.Metod ismindeki Edit overload\u0131, Edit i\u015fleminin yap\u0131laca\u011f\u0131 nesneyi yakalay\u0131p, bu nesneyi View katman\u0131na g\u00f6ndererek, 2.Metod ismindeki overload da , bu nesne \u00fczerinde de\u011fi\u015fiklikler yap\u0131ld\u0131ktan sonra veritaban\u0131na i\u015flemi i\u015flemini \u00fcstlenecektir.<br \/>\nZaten \u00f6nceki yaz\u0131m\u0131zda bahsetti\u011fimiz gibi, [HttpPost] attribute i\u015flemide, kullan\u0131c\u0131 taraf\u0131ndan post i\u015flemi geldi\u011fi zaman \u00e7al\u0131\u015ft\u0131r\u0131lacak olan metodu g\u00f6stermektedir.Sayfa ilk \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 anda 1.Metod ismini verdi\u011fimiz Edit overload\u0131 i\u015fleve girecektir, sayfadan Post tipinde bir talep gelince, 2.Metod ismindeki overload i\u015fleve girecektir.<\/p>\n<p>\u00d6nceki yaz\u0131lar\u0131m\u0131zda ,listemizi &#8220;View Content&#8221; \u015fablonlar\u0131n\u0131 kullanarak olu\u015fturdu\u011fumuzdan dolay\u0131, listemizde &#8220;Edit&#8221; linkinin mevcut oldu\u011funu hat\u0131rlayacaks\u0131n\u0131z.<\/p>\n<p>\u00d6ncelikle &#8220;Edit&#8221; linkinin t\u0131kland\u0131\u011f\u0131 \u00f6\u011frencimizin &#8220;ID&#8221; de\u011ferini yakalay\u0131p, arkaplanda olu\u015fturdu\u011fumuz Session da tutulan List koleksiyonumuzdan o Ogrenci nesnesini \u00e7ekelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public ActionResult Edit(int id)\r\n        {\r\n            List Ogrencilerimiz = Session&#x5B;&amp;quot;Ogrenciler&amp;quot;] as List;\r\n            Ogrenci DuzenlenecekOgrenci = Ogrencilerimiz.Where(o =&amp;gt; o.ID == id).FirstOrDefault();\r\n            return View(DuzenlenecekOgrenci);\r\n        }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi d\u00fczenlenmek istenen \u00f6\u011frencimizi \u00e7ektik ve View katman\u0131na g\u00f6nderdik.\u015eimdi Edit Action&#8217;\u0131na sa\u011f t\u0131klayarak, &#8220;Add View&#8221; se\u00e7ene\u011fini se\u00e7ip, View katman\u0131ndaki dosyas\u0131n\u0131 olu\u015ftural\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/edit.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1069\" title=\"edit\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/edit.png\" alt=\"\" width=\"433\" height=\"429\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/edit.png 433w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/edit-150x150.png 150w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/12\/edit-300x297.png 300w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><\/a><br \/>\nBurada dikkat etmeniz gereken husus, &#8220;View Content&#8221; alan\u0131ndan &#8220;Edit&#8221; se\u00e7ene\u011fini se\u00e7meniz gerekmektedir.Olu\u015fan Edit.aspx sayfas\u0131n\u0131n kayna\u011f\u0131 a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~\/Views\/Shared\/Site.Master&amp;quot; Inherits=&amp;quot;System.Web.Mvc.ViewPage&amp;lt;Calisma.Models.Ogrenci&amp;gt;&amp;quot; %&amp;gt;\r\n&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;\r\n\tEdit\r\n&amp;lt;\/asp:Content&amp;gt;\r\n&amp;lt;asp:Content ID=&amp;quot;Content2&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;\r\n    &amp;lt;h2&amp;gt;Edit&amp;lt;\/h2&amp;gt;\r\n    &amp;lt;% using (Html.BeginForm()) {%&amp;gt;\r\n        &amp;lt;%: Html.ValidationSummary(true) %&amp;gt;\r\n        &amp;lt;fieldset&amp;gt;\r\n            &amp;lt;legend&amp;gt;Fields&amp;lt;\/legend&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.ID) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.ID) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.ID) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.Adi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.Adi) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.Adi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.SoyAdi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.SoyAdi) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.SoyAdi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.Yasi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.Yasi) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.Yasi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.Sinifi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.Sinifi) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.Sinifi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-label&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.LabelFor(model =&amp;gt; model.SinifHocasi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;div class=&amp;quot;editor-field&amp;quot;&amp;gt;\r\n                &amp;lt;%: Html.TextBoxFor(model =&amp;gt; model.SinifHocasi) %&amp;gt;\r\n                &amp;lt;%: Html.ValidationMessageFor(model =&amp;gt; model.SinifHocasi) %&amp;gt;\r\n            &amp;lt;\/div&amp;gt;\r\n            &amp;lt;p&amp;gt;\r\n                &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Save&amp;quot; \/&amp;gt;\r\n            &amp;lt;\/p&amp;gt;\r\n        &amp;lt;\/fieldset&amp;gt;\r\n    &amp;lt;% } %&amp;gt;\r\n    &amp;lt;div&amp;gt;\r\n        &amp;lt;%: Html.ActionLink(&amp;quot;Back to List&amp;quot;, &amp;quot;Index&amp;quot;) %&amp;gt;\r\n    &amp;lt;\/div&amp;gt;\r\n&amp;lt;\/asp:Content&amp;gt;\r\n<\/pre>\n<p>\u015eimdi projemizi \u00e7al\u0131\u015ft\u0131r\u0131p, adres \u00e7ubu\u011funa &#8220;http:\/\/localhost:****\/Ogrenci&#8221; URL yap\u0131s\u0131nda link girersek e\u011fer, listemizi g\u00f6rece\u011fiz.Listemizden herhangi bir \u00f6\u011frenciye t\u0131klarsan\u0131z, adres \u00e7ubu\u011fundaki linkin a\u015fa\u011f\u0131daki \u015fekilde oldu\u011funu g\u00f6rece\u011fiz.<br \/>\n&#8220;<em><strong>http:\/\/localhost:****\/Ogrenci\/Edit\/<span style=\"color: #ff0000;\">2<\/span><\/strong><\/em>&#8221;<br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, k\u0131rm\u0131z\u0131 renkle g\u00f6sterdi\u011fim alanda, t\u0131klanan \u00f6\u011frencinin &#8220;ID&#8221; de\u011feri gelmektedir.Bunun sebebini, MVC\u2019de Details,Create,Edit,Delete Metodlar\u0131 ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131z\u0131 detayl\u0131 olarak incelerseniz anlayacaks\u0131n\u0131z.K\u0131saca, olu\u015fturulan listenin, ActionLink metoduyla olu\u015fturulan &#8220;Edit&#8221; linkinde, &#8220;id&#8221; isimli parametreye kullan\u0131c\u0131m\u0131z\u0131n &#8220;ID&#8221; de\u011ferini vermemizdir.<\/p>\n<p>Konuyu fazla da\u011f\u0131tmadan &#8220;ID&#8221; de\u011ferinden yakalay\u0131p, View katman\u0131na g\u00f6nderdi\u011fimiz \u00f6\u011frenci nesnesi \u00fczerinde de\u011fi\u015fiklikler yap\u0131p, de\u011fi\u015fiklikler yap\u0131lan bu nesneyi eski nesnemizle de\u011fi\u015ftirmeyi g\u00f6relim.MVC&#8217;de d\u00fczenleme(Edit) i\u015flemi bu mant\u0131kla yap\u0131lmaktad\u0131r.<\/p>\n<p>Tabi \u00f6ncelikle, 2.Metod ismini verdi\u011fimiz Edit overload\u0131n\u0131n parametrelerini inceleyelim.<br \/>\nint tipinden &#8220;id&#8221; ad\u0131nda ve FormCollection &#8220;collection&#8221; ad\u0131nda iki parametre almaktad\u0131r.<br \/>\n\u015eimdi \u015fu mant\u0131\u011f\u0131 iyi kavramam\u0131z gerekmektedir.Editlenecek \u00f6\u011frencinin &#8220;ID&#8221; de\u011ferinden ben 1.Metod ismini verdi\u011fimiz overload da nesnesini olu\u015fturuyorum ve de\u011fi\u015fiklikler i\u00e7in View katman\u0131na g\u00f6nderiyorum.Ee haliyle de\u011fi\u015fiklikler bu nesne \u00fczerinde yap\u0131lacakt\u0131r ve ben bu nesneyi Post etti\u011fim zaman, 2.Metod ismini verdi\u011fimiz Edit overload\u0131 \u00e7al\u0131\u015f\u0131p, de\u011fi\u015fiklik yap\u0131lm\u0131\u015f olan bu nesneyi yakal\u0131yor ve eski nesneyle de\u011fi\u015ftiriyor.<\/p>\n<p>O halde, int tipinden olan &#8220;id&#8221; ad\u0131ndaki parametremiz, o \u00f6\u011frencinin &#8220;ID&#8221; de\u011ferinde eski nesnemizi bize getirecektir.Yeni, g\u00fcncellenmi\u015f yani editlenmi\u015f nesnemizide Ogrenci tipinden ikinci parametre almam\u0131z yeterli olacakt\u0131r.Burada FormCollection tipinden &#8220;collection&#8221; ad\u0131nda bir parametremiz varsay\u0131lan olarak yaz\u0131lm\u0131\u015ft\u0131r.Bu parametremizi biz Ogrenci tipine \u00e7evirirsek e\u011fer, View katman\u0131nda yap\u0131lan post i\u015flemi s\u0131ras\u0131nda, bize g\u00fcncellenmi\u015f \u00f6\u011frencinin nesnesini g\u00f6nderecektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;HttpPost]\r\n        public ActionResult Edit(int id, Ogrenci  GuncellenmisOgrenci)\r\n        {\r\n            try\r\n            {\r\n                List Ogrencilerimiz = Session&#x5B;&amp;quot;Ogrenciler&amp;quot;] as List;\r\n                \/\/De\u011fi\u015ftirilecek eski ilk nesne\r\n                Ogrenci DuzenlenecekOgrenci = Ogrencilerimiz.Where(o =&amp;gt; o.ID == id).FirstOrDefault();\r\n                \/\/Eski nesnemizi g\u00fcncellenmi\u015fi ile de\u011fi\u015ftiriyoruz.\r\n                UpdateModel(DuzenlenecekOgrenci,&amp;quot;&amp;quot;);\r\n                return RedirectToAction(&amp;quot;Index&amp;quot;);\r\n            }\r\n            catch\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kodlar\u0131 incelerseniz e\u011fer, 2. parametreyi Ogrenci tipinden &#8220;GuncellenmisOgrenci&#8221; ad\u0131nda bir parametre olarak de\u011fi\u015ftirdik.MVC&#8217;nin \u00f6zelli\u011finde olan UpdateModel() metodu ile eski nesneyle yenisinin yerlerini de\u011fi\u015ftirdik.Bu metod, ilk parametresine de\u011fi\u015ftirilecek olan nesneyi, ikinci parametresine ise yerine koyulacak nesneyi almaktad\u0131r.Burada ikinci parametre yerine &#8220;&#8221; i\u015fareti koydum.Asl\u0131nda bu parametreyi vermesekte olur.UpdateModel() fonksiyonu i\u00e7ine sadece de\u011fi\u015ftirilecek nesneyi yazmam\u0131z yeterli olacakt\u0131r.<\/p>\n<p>Projemizi \u00e7al\u0131\u015ft\u0131r\u0131p, herhangi bir \u00f6\u011frenciyi Editlersek e\u011fer, program\u0131m\u0131z\u0131n tak\u0131r\u0131nda oldu\u011funu anlayacaks\u0131n\u0131z umar\u0131m \ud83d\ude42<\/p>\n<p>Bu yaz\u0131m\u0131nda sona gelmi\u015f bulunmaktay\u0131z.Umar\u0131m MVC&#8217;de Update mekanizmas\u0131 hakk\u0131nda azda olsa akl\u0131n\u0131zda bir temel olu\u015fturabilmi\u015fimdir.<br \/>\nFaydalanman\u0131z dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/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 \u00f6nceki, MVC\u2019de Create Metodu ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda Create metodunu inceledik ve bu metod sayesinde ekleme i\u015flemini g\u00f6rd\u00fck.Bu yaz\u0131m\u0131zda ise, Edit metodu sayesinde d\u00fczenleme i\u015flemini g\u00f6rece\u011fiz.<!-- 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,294,283],"class_list":["post-1068","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","tag-asp-net-mvc","tag-edit","tag-mvc"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1068","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=1068"}],"version-history":[{"count":2,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1068\/revisions"}],"predecessor-version":[{"id":10377,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1068\/revisions\/10377"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}