0

ルート データに基づいて MVC3 サイトをローカライズしています。たとえば、http://domain/frサイトをフランス語で表示し、http://domainデフォルトで英語にする必要があります... 以下は、Global.ascx にルートを登録する方法です。

私の問題はhttp://domain/fr/Home/Index機能しますが、http://domain/Home/Indexリソースが見つからないというエラーが表示され、調査の結果、ルートテーブルが「ホーム」を {lang} にマッピングしていることがわかります

私は何が欠けていますか?

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.IgnoreRoute("favicon.ico");

        routes.MapRoute(
            "LogOn", // Route name
            "Account/{action}", // URL with parameters
            new { controller = "Account", action = "LogOn" } // Parameter defaults
        );

        routes.MapRoute(
            "Localization", // Route name
            "{lang}/{controller}/{action}", // URL with parameters
            new { UrlParameter.Optional, controller = "Home", action = "Index"} // Parameter defaults
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}", // URL with parameters
            new { controller = "Home", action = "Index"} // Parameter defaults
        );

    }
4

1 に答える 1

2
routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}", // URL with parameters
            new { controller = "Home", action = "Index"}, // Parameter defaults
            new { controller = "[a-zA-Z]{3,}" } //regexp constraint on controller name
        );

routes.MapRoute(
            "Localization", // Route name
            "{lang}/{controller}/{action}", // URL with parameters
            new { UrlParameter.Optional, controller = "Home", action = "Index"} // Parameter defaults
        );

すべてのコントローラー名が2文字より長い場合、トリックを行う必要があります:)

于 2012-08-23T15:29:15.183 に答える