以下是什么区别?
[Route("movies/genre/{genre}")]
public ActionResult ViewByGenre(string genre="action")
而不是
[Route("movies/genre/{genre=action}")]
public ActionResult ViewByGenre(string genre)
答案 0 :(得分:4)
在此声明中
[Route("movies/genre/{genre}")]
public ActionResult ViewByGenre(string genre="action")
genre
参数在路由中不是可选的,只有ViewByGenre
函数会对其进行定值。
这里
[Route("movies/genre/{genre=action}")]
public ActionResult ViewByGenre(string genre)
你是说genre
参数在路线中是可选的。如果它到达null,则需要action
值。 ViewByGenre函数总是应该有类型参数valorized
请参阅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 }
);
}