c#-属性路由的区别?
作者:互联网
以下内容有什么区别?
[Route("movies/genre/{genre}")]
public ActionResult ViewByGenre(string genre="action")
代替
[Route("movies/genre/{genre=action}")]
public ActionResult ViewByGenre(string genre)
解决方法:
在本陈述中
[Route("movies/genre/{genre}")]
public ActionResult ViewByGenre(string genre="action")
路径中的genre参数不是可选的,只有ViewByGenre函数会对其赋值.
这里
[Route("movies/genre/{genre=action}")]
public ActionResult ViewByGenre(string genre)
您是说genre参数在路由中是可选的.如果到达null,它将采取行动值. ViewByGenre函数始终应具有流派参数值
参考here获取文档
这样,您就可以进行属性路由.优点是,属性路由使您可以更好地控制应用程序中的URI,当您在代码中编辑某些内容时,它不会中断其他路由.
另一方面,约定基础规则的示例是当您像这样在RouteConfig.cs文件中确定规则时
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
标签:asp-net-mvc-5,attributerouting,c 来源: https://codeday.me/bug/20191028/1955308.html