2016-08-18 8 views
0

は、私は同じアクション名を持つ2つのメソッドを持っていますが、異なるルーティングをので、彼らが要求する(このlinkによってモデル化)GETとPOSTするために異なる応答属性:GETリクエストとPOSTリクエストが[HttpGet]というラベルの付いた同じメソッドに移動するのはなぜですか?私のMVCコントローラで

[HttpGet] 
public string Test() 
{ 
    return "get"; 
} 

[ActionName("Test")] 
[HttpPost] 
public string Test_Post() 
{ 
    return "post"; 
} 

を、対応するURIがちょうどあります。また、私のRouteConfig.csにroutes.MapMvcAttributeRoutes()という属性ルーティングを有効にしました。

ただし、このURIにGETリクエストまたはPOSTリクエストを送信すると、常にTest()がコールされ、決してTest_Post()はコールされません。リクエストが同じメソッドにルーティングされ、ルート属性が無視されるのはなぜですか?

EDIT:

$.post("https://{baseURL}/Sample/Test", function(result){ 
     console.log(result); 
    }}); 

常にTest()経由の代わりに "ポスト" のTest_Post()を経由して "取得" 印刷します:明確にするために、私は、AJAX呼び出しで要求を送信します。

答えて

0

解決済み!私はMVCコントローラでSystem.Web.Http名前空間を使用していましたが、ActionName、AcceptVerbsなどの属性はHttpとMvcの両方の名前空間に存在しています。私は明示的にSystem.Web.Mvc名前空間を参照し、属性は正常に動作します。

関連する問題