2014-03-25 35 views
0

我在我的控制器中有幾個post方法。無論何時將數據發佈到此控制器,只調用第一個POST方法。我的要求是調用第二種方法,因爲這兩種方法的參數都會有所不同。這裏是路由配置:只有第一個POST方法的控制器被稱爲

config.Routes.MapHttpRoute(
name: "AddUser", 
routeTemplate: "api/users/adduser", 
defaults: new { controller = "users" } 
); 
config.Routes.MapHttpRoute(
name: "ChangeUser", 
routeTemplate: "api/users/changeuser", 
defaults: new { controller = "users" } 
); 

這是我的控制器代碼:

Ext.Ajax.request({ url: 'localhost/myapp/api/users/changeuser' 
        , mode: 'POST' 
        , params: { userID: 1 } 
        } 
       ); 
+1

你能告訴(鑑於形式)調用的代碼? –

+0

我在客戶端使用ExtJS。這是我如何調用這些方法:Ext.Ajax.request({ URL: '本地主機/ MyApp的/用戶/ changeuser', 模式: 'POST', PARAMS:{ 用戶ID:1 }}); – user1640256

+0

請將您的代碼添加到問題中,而不是評論中。 –

回答

0

搜索:

[HttpPost, ActionName("Name")] 

代替

[AllowAnonymous] 
[ActionName("adduser")] 
public string PostDetails(JObject userData)//Always this method is called. 
{ 
//My code here 
} 

[AllowAnonymous] 
[ActionName("changeuser")] 
public string ChangeUser(int userId) 
{ 
//My code here 
} 

這是從視圖中調用作者:

[ActionName("Name")] 

我不是專家,但它可能以這種方式工作。

+0

沒有工作。同樣的結果。 – user1640256

+0

你可以發佈.net部分嗎? – Maratto

+0

我已經發布在我的問題(控制器方法)。 – user1640256

1

在路由配置中添加約束可以解決您的問題。嘗試下面的配置..

config.Routes.MapHttpRoute(
name: "AddUser", 
routeTemplate: "api/{controller}/{action}", 
defaults: new { }, 
constraints: new { controller = "users", action = "adduser" } 
); 

config.Routes.MapHttpRoute(
name: "ChangeUser", 
routeTemplate: "api/{controller}/{action}", 
defaults: new { }, 
constraints: new { controller = "users", action = "changeuser" } 
); 

C#的部分:

[AllowAnonymous] 
[ActionName("adduser")] 
[AcceptVerbs("Post")] 
public string PostDetails(JObject userData)//Always this method is called. 
{ 
//My code here 
} 

[AllowAnonymous] 
[ActionName("changeuser")] 
[AcceptVerbs("Post")] 
public string ChangeUser(int userId) 
{ 
//My code here 
} 
+0

沒有工作。仍然「AddUser」方法被調用。 – user1640256

+0

我也更新了C#代碼部分。路由模板字符串必須完全是「api/{controller}/{action}」。請勿在路由模板中使用控制器名稱或操作名稱。約束將檢查控制器和來自給定url的動作。 – petchirajan

+0

我按照提供的代碼對其進行了更改,但現在如果我將控制器作爲「localhost/myapp/api/users」調用,則會轉到相同的方法第一篇文章)。如果我將控制器稱爲「localhost/myapp/api/users/changeuser」,則會出現404錯誤。 – user1640256

相關問題