我有一个名为account
我正在使用MvcSiteMapProvider
制作面包屑
我有一项操作可以返回有关特定发票的详细信息。此操作的网址类似于localhost/account/profile/invs-histr/details/ID
,其中ID是要显示的发票的ID。
我有accountAreaRegistration.cs
用于注册区域路由,我有RouteConfig.cs
用于注册全局路由。
目前,我必须在两个文件中注册localhost/account/profile/invs-histr/details/ID
的路由。如果我没有在accountAreaRegistration.cs
注册此路线,我就会404 exception
。如果我没有在RouteConfig.cs
中注册此路线,则不会渲染面包屑。
RouteConfig.cs
档案的开头:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
}
accountAreaRegistration.cs
:
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapMvcAttributeRoutes();
}
任何人都可以解释一下,routes.MapMvcAttributeRoutes()
和context.Routes.MapMvcAttributeRoutes()
之间的区别是什么?
为什么我应该在两个文件中注册路由?
提前谢谢
答案 0 :(得分:6)
这是一个扩展方法,因此您调用它的对象是第一个参数。此参数是RouteCollection
,此集合在两种情况下都不同:
如果您想避免对每个区域进行第二次调用,可以使用[RouteArea("AreaName")]
属性修饰控制器。
如果您想更好地了解属性路由,请参阅此文档:Attribute Routing in ASP.NET MVC 5请特别注意“区域”部分。