路由和url中的ASP.NETMVC 5文化我已經(jīng)翻譯了我的MVC網(wǎng)站,這是很好的工作。如果我選擇另一種語(yǔ)言(荷蘭語(yǔ)或英語(yǔ)),內(nèi)容將被翻譯。這是因?yàn)槲以跁?huì)話中設(shè)置了文化?,F(xiàn)在我想在url中顯示所選的區(qū)域性(=區(qū)域性)。如果它是默認(rèn)語(yǔ)言,它不應(yīng)該顯示在url中,只有當(dāng)它不是默認(rèn)語(yǔ)言時(shí),它才應(yīng)該顯示在url中。例如:默認(rèn)區(qū)域性(荷蘭語(yǔ)):site.com/foo
site.com/foo/bar
site.com/foo/bar/5對(duì)于非默認(rèn)文化(英文):site.com/en/foo
site.com/en/foo/bar
site.com/en/foo/bar/5我的問(wèn)題我總是看到這個(gè):site.com/nl/foo/bar/5,即使我點(diǎn)擊了英語(yǔ)(見(jiàn)_Layout.cs)。我的內(nèi)容被翻譯成英文,但url中的路由參數(shù)保留在“nl”而不是“en”上。我怎么能解決這個(gè)問(wèn)題,或者我做錯(cuò)了什么?我嘗試在global.asax中設(shè)置RouteData,但沒(méi)有幫助。 public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Errors",
url: "Error/{action}/{code}",
defaults: new { controller = "Error", action = "Other", code = RouteParameter.Optional }
);
routes.MapRoute(
name: "DefaultWithCulture",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { culture = "nl", controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { culture = "[a-z]{2}" }
);// or maybe: "[a-z]{2}-[a-z]{2}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { culture = "nl", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}Global.asax.cs: protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
- 2 回答
- 0 關(guān)注
- 535 瀏覽
添加回答
舉報(bào)
0/150
提交
取消