只调用控制器的第一个POST方法

本文关键字:POST 方法 第一个 调用 控制器 | 更新日期: 2023-09-27 17:52:50

我有几个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" }
);

这是我的控制器代码:

[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
}

从视图中调用:

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

只调用控制器的第一个POST方法

在路由配置中添加约束将解决您的问题。试试下面的config.

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
}

尝试:

[HttpPost, ActionName("Name")] 

代替:

[ActionName("Name")]

我不是专家,但它可能是这样的