【问题标题】:Need assistance with RAZOR在使用 RAZOR 时需要帮助
【发布时间】:2017-02-14 17:26:13
【问题描述】:

我有产品列表,当我需要编辑某些内容时,我单击产品名称右侧的按钮编辑。我怎样才能做可点击的整行。

现在我有 <td><b>@Html.ActionLink(Products.Resources.Properties.Literals.Edit, "Edit", new { id = items[i].Template.Id })</b></td>

但我想做所有可点击的。

【问题讨论】:

  • 您必须在 javascript 中将事件处理程序附加到 <tr>。您仍然可以将 C# 插入该 JavaScript 以提供链接

标签: c# html razor


【解决方案1】:

您只需使用一点点 JavaScript 即可。

使用纯 javascript,您可以在 html 的“tr”元素上添加一个事件:

<tr onclick="document.location='@Url.Action(Products.Resources.Properties.Literals.Edit, "Edit", new { id = items[i].Template.Id })'">
    <td><b>Edit</b></td>...
</tr>

通过这种方式,现在整行都可以点击了。 使用 jquery 你可以做更多:

<tr data-link="@Url.Action(...)">
   <td><b>Edit</b></td>
</tr>

您的 jquery 代码应如下所示:

$('tr[data-link]').on('click', function() {
  document.location = $(this).attr('data-link');
});

我认为第二种解决方案在需要时是最优雅且最容易实施的。

希望这会有所帮助。

【讨论】:

  • 这是不正确的。 ActionLink 生成一个锚元素,因此您的 document.location 将转到一个 &lt;a&gt; 字符串。 see
  • 需要引入IUrlHelper,使用Action扩展方法生成绝对路径
  • 抱歉,您是对的。我已经更正了我的答案!谢谢@CallumLinington
  • 我能不能只做这样的事情 ? 我已经处理了点击编辑,我可以在整个
  • 好的,非常感谢
【解决方案2】:

您需要将click 处理程序附加到tr - 使整个tr 成为链接将是无效标记并且无论如何都不起作用。

有很多方法可以做到这一点,我不太确定您的 JS 设置是什么样的,所以我建议您查看您的框架/库提供的内容(例如,如果您使用的是 jQuery,请查看类似:

$('tr').on('click', function($event) {
    // ...
});

祝你好运!

【讨论】:

  • 这并不能回答所有问题 - 例如,如何将链接获取到 javascript...
猜你喜欢
相关资源
最近更新 更多
热门标签