﻿
{"id":2169,"date":"2013-09-24T00:50:37","date_gmt":"2013-09-24T00:50:37","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=2169"},"modified":"2013-09-24T00:50:37","modified_gmt":"2013-09-24T00:50:37","slug":"asp-net-mvc-filtrelerde-oncelik-islemleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-filtrelerde-oncelik-islemleri\/","title":{"rendered":"Asp.NET MVC &#8211; Filtrelerde \u00d6ncelik \u0130\u015flemleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Asp.NET MVC mimarisinde s\u0131ras\u0131yla <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvcde-filtrelere-giris\/\" target=\"_blank\">Asp.NET MVC&#8217;de Filtrelere Giri\u015f<\/a>, <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvcde-exception-filtresi\/\" target=\"_blank\">Asp.NET MVC&#8217;de Exception Filtresi<\/a> ve <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvcde-action-result-filtreleri\/\" target=\"_blank\">Asp.NET MVC&#8217;de Action &amp; Result Filtreleri<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131lar\u0131mda filtrelere de\u011finmi\u015ftik.Lakin mimaride haz\u0131r olarak gelen veya manuel olarak elle yaz\u0131lan filtrelerde \u00e7al\u0131\u015fma \u00f6nceli\u011fi \u00f6nem arz etmektedir.Bu yaz\u0131m\u0131zda bu konuyu irdeleyece\u011fiz.<br \/>\n<!--more--><br \/>\nMimaride haz\u0131r olarak gelen filtrelerde \u00f6ncelik s\u0131ras\u0131 &#8216;<em>Authorization Filter<\/em>&#8216;, &#8216;<em>Action Filter<\/em>&#8216;, &#8216;<em>Result Filter<\/em>&#8216; ve &#8216;<em>Exception Filter<\/em>&#8216; \u015feklindedir.<br \/>\nTabi bu durumda ayn\u0131 tipe sahip Attribute&#8217;lar yani filtreler \u00f6ncelik s\u0131ras\u0131na g\u00f6re \u00e7al\u0131\u015fmaktad\u0131r.Bununla ilgili bir \u00f6rnek yapal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]\r\n    public class Karsilayici : ActionFilterAttribute, IActionFilter\r\n    {\r\n        public string KarsilayiciMetin { get; set; }\r\n        public override void OnActionExecuting(ActionExecutingContext filterContext)\r\n        {\r\n            filterContext.HttpContext.Response.Write(&quot;&lt;h4&gt;&quot; + KarsilayiciMetin + &quot;&lt;\/h4&gt;&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki gibi bir Attribute&#8217;umuz oldu\u011funu varsayal\u0131m.Bu Attribute&#8217;u incelersek e\u011fer, &#8216;AttributeUsage&#8217; isimli Attribute ile i\u015faretlenmi\u015f bir yap\u0131ya sahip.&#8217;AttributeTargets.Method&#8217; \u00f6zelli\u011fiyle bu Attribute&#8217;un bir metod \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtiyoruz.&#8217;AllowMultiple = true&#8217; \u00f6zelli\u011fiyle ise bir metodu bu Attribute ile birden fazla i\u015faretleyebiliyoruz.<\/p>\n<p>\u015eimdi herhangi bir Action metodu bu Attribute ile i\u015faretleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;Karsilayici(KarsilayiciMetin = &quot;Merhaba&quot;)]\r\n        &#x5B;Karsilayici(KarsilayiciMetin = &quot;Ho\u015f geldiniz.&quot;)]\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer, bir Attribute s\u0131n\u0131f\u0131 i\u00e7inde bulunan Property&#8217;e parantezler e\u015fli\u011finde ula\u015fabiliyor ve gerekli de\u011feri set edebiliyoruz.<br \/>\nE\u011fer projeyi bu \u015fekilde derleyip \u00e7al\u0131\u015ft\u0131r\u0131rsak a\u015fa\u011f\u0131daki g\u00f6r\u00fcnt\u00fc ekrana gelecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/09\/filtreler.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/09\/filtreler.png\" alt=\"filtreler\" width=\"124\" height=\"145\" class=\"aligncenter size-full wp-image-2177\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi ayn\u0131 tipe sahip filtreler \u00f6ncelik s\u0131ras\u0131na g\u00f6re devreye girmi\u015f bulunmakta.E\u011fer ki, filtrelerin \u00e7al\u0131\u015fma s\u0131ras\u0131n\u0131 de\u011fi\u015ftirmek istiyorsan\u0131z &#8220;Order&#8221; parametresini kullanman\u0131z yeterli olacakt\u0131r.<\/p>\n<p>\u00d6rnek olarak a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;Karsilayici(KarsilayiciMetin = &quot;Merhaba&quot;, Order = 2)]\r\n        &#x5B;Karsilayici(KarsilayiciMetin = &quot;Ho\u015f geldiniz.&quot;, Order = 1)]\r\n        public ActionResult Index()\r\n        {\r\n            return View();\r\n        }\r\n<\/pre>\n<p>Bu kod blo\u011funda ise, filtrelerimin &#8220;Order&#8221; parametrelerine verilen de\u011fer s\u0131ralamas\u0131 neticesine g\u00f6re \u00e7al\u0131\u015fmas\u0131 ger\u00e7ekle\u015ftirilecek ve ekrana a\u015fa\u011f\u0131daki gibi yans\u0131yacakt\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/09\/filtreler2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/09\/filtreler2.png\" alt=\"filtreler2\" width=\"110\" height=\"133\" class=\"aligncenter size-full wp-image-2179\" \/><\/a><\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar dilerim..<\/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>Asp.NET MVC mimarisinde s\u0131ras\u0131yla Asp.NET MVC&#8217;de Filtrelere Giri\u015f, Asp.NET MVC&#8217;de Exception Filtresi ve Asp.NET MVC&#8217;de Action &amp; Result Filtreleri ba\u015fl\u0131kl\u0131 yaz\u0131lar\u0131mda filtrelere de\u011finmi\u015ftik.Lakin mimaride haz\u0131r olarak gelen veya manuel olarak elle yaz\u0131lan filtrelerde \u00e7al\u0131\u015fma&#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,345],"tags":[746,491,283],"class_list":["post-2169","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","category-mvc-4-0","tag-asp-net-mvc","tag-filtre","tag-mvc"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2169","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=2169"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2169\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=2169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=2169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=2169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}