首页 > 解决方案 > 从 html.actionlink 在外部页面上调用 jQuery 函数

问题描述

我有一个这样的操作链接:

@html.actionlink("link", "action", "controller", new { id = item.id }

我希望此链接在外部页面上调用 jQuery 函数。我已经尝试过,onclick但它总是使用默认的控制器操作方法,对于@class.

我想知道我可以这样使用它:

@html.actionlink("link text", null, null, new { id = item.id }, new { onclick = "myfunction() }

这仍然没有调用jQuery函数,我做错了什么?

这是我的 html 超链接

@item.ProductID.ToString()

以下是我的 jquery 脚本位于外部 js 文件中

$(document).ready({
function showdetails(id)
{
alert("you clicked me")
});

标签: c#jquerymodel-view-controller

解决方案


如果你只是想让它运行一个 jQuery 函数而不是去一个控制器,那么使用 actionLink 帮助器是没有意义的——它的全部目的是生成一个带有正确 URL 到 action 方法的超链接。相反,只需直接编写一个 HTML 链接(或按钮)并将点击事件附加到它。我们不需要任何 Razor 代码。

像这样的东西:

<button type="button" class="linkbutton" onclick="myfunction(@item.id)">Click here</button>

另一个错误是将函数放在一个$(document).ready({块中。这是不必要的,因为该块的想法只是在页面完成加载之前停止代码执行。使用仅从其他代码调用而不立即执行的函数,您不必担心。它会导致错误,因为这意味着您的函数仅在该块内具有范围。块外的代码无法访问它。

演示:

function myfunction(x)
{
  alert(x);
}
.linkbutton
{
  border: none;
  background: none;
  color: blue;
  text-decoration:underline;
}

.linkbutton:hover
{
  cursor:pointer;
}
<button type="button" class="linkbutton" onclick="myfunction(3)">Click here</button>


推荐阅读