Jquery 在 <a href='@Url.ActionLink()'></a> 内追加参数

Jquery Append Parameter inside <a href='@Url.ActionLink()'></a>

我在 Jquery 函数中有以下代码

$.each(array, function (index, value) {
                var id1 = value.match(/\d+/);
                $("#linksList").append("<li>" + value + "<a href='@Url.ActionLink("Details", "Jira", new { id ="${id1}" })'>" + value + "</a>" + "</li>");
            });

但是我无法传递参数 Id 。我正在为 Id 分配随机值,如下所示。我做错了什么。

<a href="/Jira/Details/%2Bid1%2B"> jira_subtask_link 41102</a>

这是不可能混合的,因为 Razor 存在于服务器端,而 jquery 是客户端

模板引擎将您的 C# 代码先于 运行 注入 HTML/CSS/Js。因此 ASP .NET 无法在准备好编译为客户端源代码时使此类变量变得可理解,因为该变量的生命周期是客户端 side/while 应用程序是 运行ning。它的编译时间与 运行 时间差异

我觉得你可能过得更好

  1. 将 javascript 变量保存到可以发送回控制器的内容中
  2. 在控制器级别,将其放入可以传递给视图的模型中
  3. 使用该 id 作为来自视图模型的变量呈现操作 link,而不是来自 jQuery

我知道这听起来有点奇怪,但这就是服务器端和客户端代码在模板引擎中交互的方式

此外,一个 hacky 方法可能是插入一个“虚拟”id 字符串,然后使用 jQuery 将该虚拟文本替换为您预期的实际 id 值

razor 代码在服务器端编译并在 html 中转换,客户端无法理解 razor 语法,所以如果你想从客户端获得相同的结果,你必须使用 javascipt

这种方式对我有用

 $("#linksList").append("<li>" + "" + "<a href='/JIra/Details/" + id + "'>" + value + "</a>" + "</li>");