通过链接 HREF 将参数传递给函数

本文关键字:参数传递 函数 HREF 链接 | 更新日期: 2023-09-27 18:31:13

我在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

通过链接 HREF 将参数传递给函数

尝试Url.Action

<a href="@Url.Action("ChangeCulture", "Home", new { lang = "es-ES", returnUrl = 
this.Request.RawUrl })" class="flag"><img src="~/images/SpanishFlag.png"/></a>

您需要传递参数及其相应的 name 属性,除非您为此设置了路由:

参数:

@Html.Raw("<a href='"/Home/ChangeCulture/?lang=es-ES&returnUrl=" + Request.RawUrl.ToString() + "'" class='"flag'"><img src='"~/images/SpanishFlag.png'"/></a>");
路由

(在路由配置中):

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

使用这样的路由,我至少会对 url 部分进行 URL 编码。