2009-05-03 17 views
4

ASP.NET MVCコントローラメソッドは、特定のHTTPメソッド(Get、Post、Getなど)を受け入れるように装飾できます。 MvcContribとASP.NET MVCの間には、 "AcceptGet、AcceptPost"とAcceptVerbsという3つのクラスがあります。 3つすべて: "AcceptGet、AcceptPost"とAcceptVerbsは同じことをします。アクション/メソッドにアクセスするためにどのhttpメソッドが許可されているかを指定します。どちらを使用するか: "AcceptGet、AcceptPost"(MvcContrib)とAcceptVerbs(ASP.NET MVC)?

AcceptGetとAcceptPostは、MvcContribにあります。 AcceptVerbsはMvcフレームワークのネイティブですが、どちらを使うのが良いですか?

AcceptGet/AcceptPost(MvcContrib)

/// <returns></returns> 
[AcceptGet] 
public ActionResult Profile(string id) 

AcceptVerbs(ASP.NET MVC)

/// <returns></returns> 
[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult EditRequest(string id) 

MvcContribプロジェクトのAcceptPostのドキュメントはhere見つけることができます。

AcceptGetとAcceptPostは、以前のバージョンのASP.NET Mvcフレームワークのギャップを埋めるために作成されました。 AcceptGetクラスとAcceptPostクラスは、厳密に型指定されたHttpMethod属性を提供しました。 (HttpVerbs列挙型に)

[Flags] 
public enum HttpVerbs 
{ 
    Delete = 8, 
    Get = 1, 
    Head = 0x10, 
    Post = 2, 
    Put = 4 
} 

私の質問は、より高度な実装である1 AcceptGet/AcceptPostまたはAcceptVerbsです:

ASP.NET MVCは、列挙型を取るAcceptVerbsでリリース!

答えて

5

私は2つの実装の違いの大きな取引がないと思うけど

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult EditRequest(string id) 

ことが今のフレームワークの一部であり、与えられた、私はいつもこれを使用しています。どちらも強く型付けされているので、実際の違いはありません。HttpVerbsの列挙型には、MVC contribバージョンにないDelete、Head、Putがあります。

2

ASP.Net MVC 2プレビュー1のリリースから、以下の属性がHttpPost、HttpGet、HttpDelete、HttpPutのコアMVCフレームワークにあります。もちろん、AcceptVerbs属性は引き続きサポートされています。

MVC 2を使用している場合、これらの新しい属性を使用でき、MVC ContribバージョンのAcceptPostとAcceptGetは必要ありません。

関連する問題