Html.ActionLink - 我想重定向到同一页面但参数不同

Html.ActionLink - I want to redirect to the same page but with different parameters

我正在使用不同的语言开发一个新的 ePortfolio,为此我想使用 html.actionlink,它只会更改我使用的参数语言。我到处都查过了,好像没找到!

目前我有这个代码

@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 />

但最后我只想要 6 个,3 个用于操作方法,3 个用于语言,请问有人能帮我吗?

@Html.ActionLink 仅使用您提供的文本为指定操作呈现 link,并允许传递可选的路由参数(如您所用)。 'current page'.

没有真正的概念

对于这种事情,您通常会使用表单 POST 来提交语言值,而不是 @Html.ActionLink 会使用的 GET。

一个简单的例子(请原谅任何语法错误,凭记忆输入):

@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" />
}

这会将所选语言提交给您的 'LanguageController' 的 'ChangeLanguage' 操作(只是编造名称,您可能希望选择更合理的语言!)

然后在您的控制器中,您可以按照 'change' 您的语言执行任何您需要的逻辑,将设置保存在 cookie/session/whatever:

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);
    }
}

对于第二部分,关于其他页面的 links,您需要有一些方法来获取基于当前语言的本地化字符串,并将其用作您的 link 文本。让我们假设一个方法 GetLocalizedString(key)(同样,编造名字!)将为您 return 正确的 link 文本:

@Html.ActionLink(GetLocalizedString("ExercisesLink"), "Exercises")