2013-04-05 54 views
-1

我不知道我在做什麼錯在這裏。每當我向我的控制器發佈一個請求時,總是調用Update動作。我打來電話:ASP.NET MVC 4 AttributeRouting在同一個控制器中的多個POST操作

http://localhost/members/login/ 

但是更新不斷收到請求。我甚至嘗試在控制器中切換操作的順序無濟於事。

[RoutePrefix("Members")] 
public class MembersController : ApiController 
{ 
    [POST("{member}")] 
    public void Update(Member member) 
    { 
     //Do Some Stuff 
    } 

    [POST("Login/{member}")] 
    public HttpResponseMessage MemberLogin(Member member) 
    { 
     //Do Some Stuff 
    } 
} 

任何幫助,非常感謝。謝謝!

回答

0

這是因爲到Api路由他們是一樣的。 This article很好地解釋瞭如何在Web API中完成路由和動作選擇。如果您不想將它們拆分爲兩個控制器,請將Update作爲PUT請求。這應該告訴路由引擎他們是兩種不同的行爲。

+0

當我打印我的路由表中我看到這樣的:POST \t會員/更新/ {成員} \t 控制器:各位 動作:更新 POST \t會員/登錄/ {成員} \t 控制器:各位 行動:登錄,所以我不認爲他們被視爲同一件事。他們有不同的行動名稱。 – crizzwald 2013-04-05 03:29:57

+0

您是否嘗試將其更改爲PUT? – 2013-04-05 03:31:28

+0

我在控制器中有另一個PUT動作;我的「添加」操作。所以結果將與該方法和操作相同。如果我單獨註冊我的路線,我可以使它工作,但我喜歡使用AttributeRouting。 – crizzwald 2013-04-05 03:33:47

0

我想通了,通過試驗和錯誤(幾個小時:/)

[RoutePrefix("Members")] 
public class MembersController : ApiController 
{ 
    [POST("Update")] 
    public void Update(Member member) 
    { 
     //Do Some Stuff 
    } 

    [POST("Login")] 
    public HttpResponseMessage MemberLogin(Member member) 
    { 
     //Do Some Stuff 
    } 
} 

不知道爲什麼這個工程,但我敢肯定它會來找我最終。

+0

它不適合我,POST不是屬性 – Roberto 2016-09-05 18:10:21

相關問題