我正在开发一个使用不同语言的新电子公文包,因此我想使用仅更改我使用的参数语言的html.actionlink。我到处检查过,似乎无法找到它!
我有这个代码sofar
@Html.ActionLink("Engelska", "Index", new { lang = "Eng" })<br />
@Html.ActionLink("Tyska", "Index", new { lang = "Ger" })<br />
@Html.ActionLink("Svenska", "Index", new { lang = "Swe" })<br />
<br />
@Html.ActionLink("Engelska - About", "About", new { lang = "Eng" })<br />
@Html.ActionLink("Tyska - Über", "About", new { lang = "Ger" })<br />
@Html.ActionLink("Svenska - Om", "About", new { lang = "Swe" })<br />
<br />
@Html.ActionLink("Engelska - Exercises", "Exercises", new { lang = "Eng" })<br />
@Html.ActionLink("Tyska - Übungen", "Exercises", new { lang = "Ger" })<br />
@Html.ActionLink("Svenska - Övningar", "Exercises", new { lang = "Swe" })<br />
&#13;
但最后我想只有6个,3个用于操作方法,3个用于语言,有人可以帮助我吗?
答案 0 :(得分:0)
@Html.ActionLink
只是使用您提供的文本呈现指定操作的链接,并允许传递可选的路由参数(如您所用)。目前的网页没有真正的概念&#39;。
通过这种方式,您通常使用表单POST提交语言值,而不是GET,这是@Html.ActionLink
将使用的。
一个简单的例子(原谅任何语法错误,从内存中输入):
@using (Html.BeginForm("ChangeLanguage", "Language", FormMethod.Post))
{
<input type="submit" value="Eng" name="lang" text="English" />
<input type="submit" value="Ger" name="lang" text="German" />
<input type="submit" value="Swe" name="lang" text="Swedish" />
}
这会将所选语言提交给&#39; ChangeLanguage&#39;你的语言控制器的动作&#39; (只是编造名字,你可能想要选择更合理的东西!)
然后在您的控制器中,您可以执行您需要的任何逻辑以更改&#39;你的语言,坚持设置cookie / session / what:
public class LanguageController : Controller
{
[HttpPost]
public ActionResult ChangeLanguage(string lang)
{
// change language, persist setting with cookie, session etc.
// redirect to the page the user came from
Redirect(Request.UrlReferrer);
}
}
对于第二部分,关于其他页面的链接,您需要有一些方法来获取基于当前语言的本地化字符串,并将其用作链接文本。让我们假设一个方法GetLocalizedString(key)
(再次,组成名字!)将为您返回正确的链接文本:
@Html.ActionLink(GetLocalizedString("ExercisesLink"), "Exercises")