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")
我正在使用不同的语言开发一个新的 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")