私は複数のasp.net mvcサイトを開発しています。言語はURLに格納されます。デフォルトのものは英語です。 私は多言語asp.net mvcサイトとルーティング
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string culture = filterContext.RouteData.Values[MvcApplication.CultureParamerName] as string;
if (string.IsNullOrWhiteSpace(culture))
culture = Facade.Common.GetLocale(BECulture.Cultures.English);//==en-us
Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
base.OnActionExecuting(filterContext);
}
と、いくつかのルートが
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Photos_Route",
"{culture}/photos/{action}/{id}",
new { controller = "photos", action = "show", culture = "en-us" }
);
routes.MapRoute(
"PhotosDownload_Route",
"{culture}/photos/{action}/{id}/resolution/{measure1}x{measure2}",
new { controller = "photos", action = "download", culture = "en-us" }
);
routes.MapRoute(
"Pages_Router",
"{culture}/page/{id}",
new { controller = "home", action = "page", id = UrlParameter.Optional, culture = "en-us" }
);
routes.MapRoute(
"Tags_Route", // Route name
"{culture}/tag/{tag}", // URL with parameters
new { controller = "photos", action = "ShowPhotosByTag", culture = "en-us" } // Parameter defaults
);
routes.MapRoute(
"Home_Route",
"{culture}/{action}",
new { controller = "home", culture = "en-us" }
);
routes.MapRoute(
"Default_Route",
"{culture}/{controller}/{action}/{id}",
new { controller = "home", action = "index", id = 1, culture = "en-us" }
);
}
私は、次のやりたいBaseControllerクラスがあります。現在の言語は英語であるならば、URLは、「EN-US」の値を含めることはできません英語理由デフォルト言語です。逆の場合は:"culture"
というURLが(RouteData.Values["culture"]
にある)パラメータがない場合、デフォルトの言語は英語です。
私はそれをどのように行うことができますか?
更新:私が望むものについての明確化。英語でのサイトは、それが/en-us/about
を指している場合、マスターページ(_Layout.cshtml)は、ページ"About site"
@Html.ActionLink(Resources.Strings.About_LinkText, "about", "home")
へのリンクが含まれています。しかし、私は(英語のサイトであれば)(en-usなし)を指す必要があります。
:これに対処するために、あなたはの線に沿って何かを試みることができます。デフォルトでは、最初のパラメータは常にカルチャになります。だから '/ home'なら' 'home''は文化になります。これは最も簡単なことではありません。ルートが設定されているか、ルートを変更できますか? – Buildstarted
私はそれらを変更することができます。 – Alexandre
文化を最後の項目に移動して '{* culture} 'にしたいと思うかもしれませんが、まだ簡単ではありません。経路制約を作成し、培養パラメータなしですべての経路を複製する必要があるかもしれません – Buildstarted