0

ASP.NET MVC は初めてで、解決できない問題に遭遇しました。Google で 2 日間検索しましたが、まだ何も見つかりません。

したがって、私の状況は次のとおりです。ルーティングを使用して、ASP.NET MVC アプリケーションにローカリゼーションを実装しようとしています。

www.mysite.com/Home/Index- デフォルト (ロシア語)

www.mysite.com/en/Home/Index- 英語の場合

だから私はルートを登録しています:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapRoute(
                        "Default",
                        "{controller}/{action}",
                        new { controller = "Home", action = "Index"},
                        new { controller = "^[a-zA-z]{4,}$" }
             );

            routes.MapRoute(
                        "Localization",
                        "{lang}/{controller}/{action}",
                        new { lang = "en", controller = "Home", action = "Index" }
            );
        }

デフォルトへの移動:正常にwww.mysite.com/Home/Index動作します。しかし、ナビゲートしようとするwww.mysite.com/en/Home/Indexと、404 error.

さらに興味深いのRouteDebuggerは、新しいルートが表示されないことです。

RouteDebugger すべてのルート テーブル

新しいルートをさらに追加したり、マッピングの順序を変更したり、すべてのルートを削除したりしても何も起こりません。ルート{controller}/{action}/{id}は、「私の前に」追加されたMVCのデフォルトルートにすぎないようです。

それで、何が問題になるのでしょうか?まったくわかりません!Rote Debugger のスクリーンショットを他のサイトから見たことがありますが、それらのルートが表示されています。たとえば、他のサイト:スクリーンショット

多分私はで何かを変更する必要がありweb.configますか?私は完全に混乱しています。助けてください!お時間をいただきありがとうございました!

4

2 に答える 2

1

RoutConfig はシーケンシャルに読み込まれ、"Default {controller}/{action}" は非常に貪欲です。「ローカリゼーション」ルート コードを「デフォルト」ルートの上に移動し、それが役立つかどうかを確認します。

于 2013-08-20T20:49:43.043 に答える
1

MVC 4 では、RouteConfig.cs は に格納されApp_Startます。MVC 4 プロジェクト ウィザードからプロジェクトを作成する場合は、すべてが配線されます。そうでない場合は、次から呼び出す必要がありますglobal.asax.cs

protected void Application_Start()
{
    // other stuff ...
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    // other stuff ...
}

また、MVC 3 プロジェクト ウィザードである IIRC は、すべてのデフォルト ルートを に直接設定するApplication_Startため、それらを削除する (RegisterRoutes場合によっては に移動する) 必要があります。

于 2013-04-19T15:41:16.260 に答える