【发布时间】:2013-11-08 18:55:50
【问题描述】:
如何简化这些路线?
config.Routes.MapHttpRoute(
name: "GetUsersRoute",
routeTemplate: "api/User",
defaults: new { controller = "User", action = "GetUsers" }
);
config.Routes.MapHttpRoute(
name: "GetUserRoute",
routeTemplate: "api/User/{id}",
defaults: new { controller = "User", action = "GetUser", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetEmailAddressRoute",
routeTemplate: "api/User/GetEmailAddress/{id}",
defaults: new { controller = "User", action="GetEmailAddress", id = RouteParameter.Optional }
);
/*** Default ***/
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我需要添加 GetEmailAddressRoute,因为控制器不知道对像 api/User/5 这样的路径采取什么操作。但是,从那时起,api/User 等以前的路线并没有导致正确的操作。
来自控制器的一些动作签名:
public Object GetUsers() { };
public Object GetUser(int id) { };
public HttpResponseMessage GetEmailAddress (int id) { };
但现在我需要为 Post 操作添加另一条路线。有没有更简单的方法?
更新:帮助我发布新用户的是从第一条路线中删除操作。现在是
config.Routes.MapHttpRoute(
name: "GetUsersRoute",
routeTemplate: "api/User",
defaults: new { controller = "User" }
);
【问题讨论】:
-
我认为您不需要其他路线来进行发布操作。我以前从未见过这样做过,除非您在其他地方发帖。尝试更改您的默认
routeTemplate: "api/{controller}/{action}/{id}"
标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing