1

私はジェネリックコントローラーを持っています

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

ジェネリックコントローラーから継承し、このメソッドを持っている追加のコントローラー:

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

私の問題は、コントローラーに2つの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 に答える