【问题标题】:MVC 4 Area Register SortingMVC 4 区域寄存器排序
【发布时间】:2013-01-02 11:06:22
【问题描述】:

在 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" }
        );

区域呢?

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

【问题讨论】:

    标签: asp.net-mvc-4 routes area


    【解决方案1】:

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

    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 类进行可订购区域注册的方法。该类没有任何可用于此目的的扩展点。

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 2017-03-25
      • 2011-03-13
      • 1970-01-01
      • 2017-07-15
      • 2012-01-28
      • 2012-02-10
      • 2018-11-11
      相关资源
      最近更新 更多