我有一个带
的通用控制器 [HttpPost]
public void Create(T entity)
{
...
}
和一个额外的控制器,它继承自通用控制器并且已经有了这个方法:
[ActionName("AddPrivileges")]
public void AddPrivileges(AddPrivilegeModel model)
{
...
}
我现在的问题是,控制器中有两个HttpPost
请求。我尝试用路由修复它,但我认为我做了一些可怕的错误。
config.Routes.MapHttpRoute(
name: "RoleActionRoute",
routeTemplate: "api/Role2/AddPrivileges"
);
我能做什么或应该做什么?
答案 0 :(得分:2)
您可以提供像这样的特殊映射
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
现在具有特殊映射