编程语言
首页 > 编程语言> > c#-属性路由的区别?

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