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

エリアはどうですか?

特定の状況では、自分の領域の 1 つを他の領域より先に登録する必要があります。エリア ルートを並べ替えるにはどうすればよいですか?

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 に答える