我在HomeController类中有一个函数。它的签名如下:
public ActionResult ChangeCulture(string lang, string returnUrl)
因此,从部分共享视图中,我试图调用此函数并通过执行以下操作传递其参数:
<a href="/Home/ChangeCulture/\"es-ES\"?this.Request.RawUrl" class="flag"><img src="~/images/SpanishFlag.png"/></a>
但它不起作用。我想将第一个参数“es-ES”和第二个参数this.Request.RawUrl
传递给函数。
怎么做?
我不想使用和Html.ActionLink
答案 0 :(得分:3)
尝试Url.Action
:
<a href="@Url.Action("ChangeCulture", "Home", new { lang = "es-ES", returnUrl =
this.Request.RawUrl })" class="flag"><img src="~/images/SpanishFlag.png"/></a>
答案 1 :(得分:1)
您需要传递带有相应名称属性的参数,除非您为此设置了路径:
参数:
@Html.Raw("<a href=\"/Home/ChangeCulture/?lang=es-ES&returnUrl=" + Request.RawUrl.ToString() + "\" class=\"flag\"><img src=\"~/images/SpanishFlag.png\"/></a>");
路线(在RouteConfig中):
routes.MapRoute(
name: "myRouteName",
url: "Home/ChangeCulture/{lang}/{url}",
defaults: new { controller = "Home", action = "ChangeCulture", lang = "", url="" }
);
需要链接,例如:
/Home/ChangeCulture/es-ES/www.xyz.com/abc
使用这样的路线我至少会对网址部分进行编码。