繁体   English   中英

如何在一个控制器中处理两个不同的HttpPost

[英]How to handle two different HttpPost in one controller

我有一个通用控制器

 [HttpPost]
 public void Create(T entity)
 {
    ...
 }

还有一个从通用控制器继承的额外控制器,并在其中添加了此方法:

[ActionName("AddPrivileges")]
public void AddPrivileges(AddPrivilegeModel model)
{
    ...
}

我现在的问题是,控制器中有两个HttpPost请求。 我试图通过路由修复它,但是我认为我做错了什么。

config.Routes.MapHttpRoute(
    name: "RoleActionRoute",
    routeTemplate: "api/Role2/AddPrivileges"
);

我该怎么办?

您可以像这样提供特殊的映射

config.Routes.MapHttpRoute(
    name: "SpecialAction",
    routeTemplate: "api/{controller}/AddPrivileges",
    defaults: new { action = "AddPrivileges" }
    , constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) }
    );

config.Routes.MapHttpRoute(
    name: "PostAction",
    routeTemplate: "api/{controller}",
    defaults: new { action = "Create" }
    , constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) }
    );
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
    );

因此,您的特殊方法AddPrivileges现在具有特殊映射

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM