ASP.NET MVC - Html.Beginform使用默认路由值

时间:2016-01-08 08:29:46

标签: asp.net-mvc-4 routing multilingual

我有一个多语言的asp.net mvc网站,其中有两种语言土耳其语和英语。默认语言为土耳其语。

在Global.asax中,我有两个默认值,一个是默认值,一个是默认本地化的。像这样:

routes.MapRoute(
            "DefaultLocalized", // Route name
            "{lang}/{controller}/{action}/{id}", // URL with parameters
            constraints: new { lang = @"(tr)|(en)" },
            defaults: new { lang = "tr", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

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

我的观点中有Html.BeginForm,如下所示:

@using (Html.BeginForm("Login","Authentication")) {
   @Html.ValidationSummary(true)
   @Html.AntiForgeryToken()
   // SOME CODE GOES HERE
}

我将语言保存在Cookie中,也保存在Session变量中。 当语言是土耳其语时,url就像:

www.example.com/tr/Authentication/Login

当语言为英语时,url就像:

www.example.com/en/Authentication/Login

但是当我在网站上查看源代码时,表单元素始终是:

<form action="/tr/Authentication/Login" method="post">

所以它总是重定向到&#34; / tr / Authentication / Login&#34;登录失败时。

有没有办法更改表单操作网址始终与网站当前语言匹配?

0 个答案:

没有答案