1

我有一个通用控制器

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

和一个额外的控制器,它继承自通用控制器,并在其中得到了这个方法:

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

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

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

我可以或应该做什么?

4

1 回答 1

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现在有特殊的映射

于 2013-06-06T13:30:34.340 回答