【问题标题】:How to pass knockout.js value to ActionLink如何将 knockout.js 值传递给 ActionLink
【发布时间】:2020-02-06 02:08:39
【问题描述】:

我们有一个显示表格的 MVC 项目。该表填充了一个 knockout.js 数组。我希望能够将值传递给如下所示的 Actionlink(),但无法识别“knockoutVar”。

有可能做这样的事情吗?

<!-- ko foreach: $root.myFileList -->
  <tr>
   <td data-bind="text: Document"></td>
   <td> @Html.ActionLink("click me", "mymethod", "mycontroller", new {id = knockoutVar }, null)      </td>

【问题讨论】:

  • 您混淆了服务器端和客户端代码。 @Html.ActionLink 将在服务器上呈现,在淘汰赛能够在客户端传递任何东西之前。

标签: asp.net-mvc knockout.js


【解决方案1】:

直接在超链接标签上使用数据绑定属性:

<td><a data-bind="attr: { 'href': '@Url.Action("mymethod", "mycontroller")?id=' + knockoutVar() }">click me</a></td>

编辑:不知道为什么投反对票?这是经过测试的代码,将创建一个指向:http://url/mycontroller/mymethod?id=1001

的链接

【讨论】:

  • 不知道为什么这被否决了。对我来说似乎是一个非常合理的解决方案。我会将它移到视图模型中,但它解释了基本思想。
【解决方案2】:

上面的答案对我来说似乎也是正确的,我可以看到可行的唯一方法是,您实际上不想触发服务器请求而是留在 js-viewmodel 上下文中,那么您可以像这样简单地添加一个数据绑定属性:

@Html.ActionLink("clickme", "action", "controller", new { data_bind = "click: (item) => alert(item.id)" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多