去年,基于属性的路由被引入到ASP.NET Web API路由(http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx)的核心中。
我想添加的内容暗示它在某种程度上比应用程序启动中的标准命令式路由方法要好,但是除了开发者偏好(这不是我在这里关注的)之外,这两种方法的具体优点和缺点是什么?
更新:我应该澄清一下,“它比它更好”将更好地表述为:“它在值(value)之上增加了值(value)”。我的意思是,只有在他们认为有值(value)的情况下,他们才会添加它。所以我的问题是,这两种方法之间的利弊是什么(除了简单的偏好之外)。
最佳答案
属性路由更加干燥。例如:
[RoutePrefix("{controller}")]
[Route("{reviewId:int}/{action=Show}")]
public class ReviewsController : Controller {
public ActionResult Show(int reviewId) {
throw new NotImplementedException();
}
public ActionResult Edit(int reviewId) {
throw new NotImplementedException();
}
[Route("foo")]
public ActionResult Foo() {
throw new NotImplementedException();
}
}
为上述 Controller 创建的路由为:
routes.MapRoute(null, "{controller}/foo",
new { controller = "Reviews", action = "Foo" });
routes.MapRoute(null, "{controller}/{reviewId}/{action}",
new { controller = "Reviews", action = "Show" },
new { reviewId = new IntRouteConstraint() });
注意:
关于asp.net - ASP.NET Web API中基于属性的路由与命令式路由的具体优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539163/