1

在 MVC 路由中我有一个问题。

在基本路由中,您可以通过按您希望的顺序编写路由来简单地对路由进行排序。如下所示:

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new [] {"SampleApp.UI.Web.Controllers"}
        );

        routes.MapRoute(
            "CompanyRoute",
            "{Company_url}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "SampleApp.UI.Web.Controllers" }
        );

地区呢?

在特殊情况下,我需要先注册我的一个区域,然后再注册另一个区域。如何对区域路线进行排序?

4

1 回答 1

0

根据我在反汇编程序的帮助下得出的结论:

internal static void RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, object state) {
    List<Type> areaRegistrationTypes = TypeCacheUtil.GetFilteredTypesFromAssemblies(_typeCacheName, IsAreaRegistrationType, buildManager);
    foreach (Type areaRegistrationType in areaRegistrationTypes) { 
        AreaRegistration registration = (AreaRegistration)Activator.CreateInstance(areaRegistrationType);
        registration.CreateContextAndRegister(routes, state); 
    } 
}

这是一个抽象类的方法AreaRegistration,所有自定义区域注册类都被调用。如您所见,没有排序。更深层次的TypeCacheUtil.GetFilteredTypesFromAssemblies方法也没有排序。

我看不到任何使用AreaRegistration类进行可订购区域注册的方法。该类没有任何可用于此目的的扩展点。

于 2013-02-26T08:32:54.203 回答