为什么 ASP.NET MVC 路由有名字?
Why does an ASP.NET MVC route have a name?
在 ASP.NET MVC 5 网络应用程序中,有一个注册许多路由的 RouteConfig class。到目前为止,在我看到的所有示例中,只有“默认”路由具有非空名称。 URL 模式和默认路由值似乎足以将任何 URL 正确关联到要执行的控制器和操作。那么,命名路线有什么好处吗?用于调试或记录?只是为了自我记录代码?
例如:
public class RouteConfig
{
public static void RegisterRoutes( RouteCollection routes )
{
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
// Most pages.
routes.MapRoute( name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "home", action = "index", id = UrlParameter.Optional }
// A special page.
// Should the route have a name?
routes.MapRoute( name: "",
url: "special",
defaults: new { controller = "special", action = "index", HttpVerbs = HttpVerbs.Get } );
}
}
命名路线的主要原因是,如果您需要 link 从应用程序中的某处到路线,您可以引用该名称。这样,如果实际的 URL/path 发生变化,您就不会在引用该路由的代码中的任何地方中断。
在 ASP.NET MVC 5 网络应用程序中,有一个注册许多路由的 RouteConfig class。到目前为止,在我看到的所有示例中,只有“默认”路由具有非空名称。 URL 模式和默认路由值似乎足以将任何 URL 正确关联到要执行的控制器和操作。那么,命名路线有什么好处吗?用于调试或记录?只是为了自我记录代码?
例如:
public class RouteConfig
{
public static void RegisterRoutes( RouteCollection routes )
{
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
// Most pages.
routes.MapRoute( name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "home", action = "index", id = UrlParameter.Optional }
// A special page.
// Should the route have a name?
routes.MapRoute( name: "",
url: "special",
defaults: new { controller = "special", action = "index", HttpVerbs = HttpVerbs.Get } );
}
}
命名路线的主要原因是,如果您需要 link 从应用程序中的某处到路线,您可以引用该名称。这样,如果实际的 URL/path 发生变化,您就不会在引用该路由的代码中的任何地方中断。