「ASP.NET MVC/セレクター」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
 
25行目: 25行目:
 
== 主なセレクタークラス ==
 
== 主なセレクタークラス ==
 
* [[ActionMethodSelectorAttribute クラス (System.Web.Mvc)]]
 
* [[ActionMethodSelectorAttribute クラス (System.Web.Mvc)]]
** AcceptVerbsAttribute クラス (System.Web.Mvc)]]
+
** [[AcceptVerbsAttribute クラス (System.Web.Mvc)]]
** HttpDeleteAttribute クラス (System.Web.Mvc)]]
+
** [[HttpDeleteAttribute クラス (System.Web.Mvc)]]
** HttpGetAttribute クラス (System.Web.Mvc)]]
+
** [[HttpGetAttribute クラス (System.Web.Mvc)]]
** HttpPostAttribute クラス (System.Web.Mvc)]]
+
** [[HttpPostAttribute クラス (System.Web.Mvc)]]
** HttpPutAttribute クラス (System.Web.Mvc)]]
+
** [[HttpPutAttribute クラス (System.Web.Mvc)]]
** NonActionAttribute クラス (System.Web.Mvc)]]
+
** [[NonActionAttribute クラス (System.Web.Mvc)]]
* ActionNameSelectorAttribute クラス (System.Web.Mvc)]]
+
* [[ActionNameSelectorAttribute クラス (System.Web.Mvc)]]
** ActionNameAttribute クラス (System.Web.Mvc)]]
+
** [[ActionNameAttribute クラス (System.Web.Mvc)]]
  
 
== セレクターの独自実装 ==
 
== セレクターの独自実装 ==

2012年5月18日 (金) 04:21時点における最新版

ASP.NET MVCセレクターとは、アクションメソッドコントローラークラスメソッド)に、属性Attribute)を用いて、コントローラーによるアクションの振り分け選択する機能である。

ASP.NET MVCの規定値ではメソッド名がアクション名になるが、ActionName属性(ActionNameAttributeクラス)を付けることでアクション名を明示することもできる。この際にセレクターを用いると、同一アクション名でPOSTやGETなどの条件でアクションメソッドを切り替えるということが可能になる。

    public class HomeController : Controller
    {
        [ActionName("Index"), AcceptVerbs(HttpVerbs.Get)]
        public ActionResult IndexGet()
        {
            // GETの時はこちら
            return View();
        }

        [ActionName("Index"), AcceptVerbs(HttpVerbs.Post)]
        public ActionResult IndexPost()
        {
            // POSTの時はこちら
            return View();
        }
    }

なお、AcceptVerbs(HttpVerbs.Post)などの部分は記述が長ったらしいということで、ASP.NET MVC 2からHttpPost属性やHttpGet属性という短い名前が用意されている。

主なセレクタークラス[編集 | ソースを編集]

セレクターの独自実装[編集 | ソースを編集]

基本はActionMethodSelectorAttributeクラスを継承、IsValidForRequestメソッドをオーバーライドし、その中に条件を書くことで独自のセレクターを作ることができる。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]