【问题标题】:how to call javascript function in html.actionlink in asp.net mvc?如何在asp.net mvc的html.actionlink中调用javascript函数?
【发布时间】:2011-02-20 19:32:50
【问题描述】:

如何在asp.net mvc中调用html.actionlink中的javascript函数?

我想调用 java 脚本中的一种方法,但如何在同一页面的 html.actionlink 中调用它 提前谢谢

【问题讨论】:

  • 对我来说,不清楚你想要达到什么目的。 Html.ActionLink 在服务器上运行,您的 javascript 在客户端上运行;没有办法一个人可以打电话给另一个人。您的意思是您希望在单击 Html.ActionLink 创建的链接时执行一些 javascript?
  • 是的,我想在点击特定链接时调用一种方法
  • 值得注意的是,如果您的链接仅触发一些 javascript,即弹出窗口,并且您实际上并不希望用户导航到某个地方,那么 ActionLink 不是您需要的元素。标准 href 最适合这种情况。

标签: javascript asp.net asp.net-mvc


【解决方案1】:

你需要使用 htmlAttributes 匿名对象,像这样:

<%= Html.ActionLink("linky", "action", "controller", new { onclick = "someFunction();"}) %>

你也可以用 jquery/whatever 给它一个附加的 id,像这样:

<%= Html.ActionLink("linky", "action", "controller", new { id = "myLink" }) %>


$('#myLink').click(function() { /* bla */ });

【讨论】:

  • 第一个 actionlink 还会调用控制器吗?如果是这样,我将如何禁用它?
  • @Djeroen,好吧,我是个白痴,如果我不希望它调用控制器,为什么我什至需要一个操作链接
  • 我们可以用 Ajax.ActionLink 实现同样的事情吗?
【解决方案2】:

要在您的操作链接中调用 javascript,您只需像这样编写操作链接:

@Html.ActionLink("Delete", "Your-Action", new { id = item.id },
                 new { onclick="return confirm('Are you sure?');"})

不要混淆路由值和 html 属性。

【讨论】:

    【解决方案3】:
    <a onclick="MyFunc()">blabla..</a>
    

    @Html.ActionLink 在这种情况下没有什么可以利用的了。 剃须刀本身就是高级的,请尽可能将其丢弃。

    【讨论】:

    • 对我来说,这是最好的答案!
    • 同意。基于只想运行 Javascript 函数,这是更正确的答案。想要调用Controller的时候使用ActionLink,使用上面的就可以明明白白的调用JavaScript Function。
    【解决方案4】:
    @Html.ActionLink("Edit","ActionName",new{id=item.id},new{onclick="functionname();"})
    

    【讨论】:

      【解决方案5】:

      这篇文章有点老了,但实际上有一种方法可以执行 onclick 运算符,它调用一个函数,而不是去 ASP.NET 中的任何地方

      helper.ActionLink("Choose", null, null, null, 
          new {@onclick = "Locations.Choose(" + location.Id + ")", @href="#"})
      

      如果您在控制器/操作中指定空引号等,它可能会添加指向您列出的内容的链接。您可以这样做,并在 onclick 中执行 return false 。您可以在以下位置阅读更多相关信息:

      What's the effect of adding 'return false' to a click event listener?

      如果您在 cshtml 文件中执行此操作,则只需自己指定链接(href...)而不是让 ActionLink 处理它会更简洁。如果您正在使用 HtmlHelper,就像我上面的示例来自,那么我认为调用 ActionLink 是一个不错的解决方案,或者可能更好的是,改为使用 tagbuilder。

      【讨论】:

        【解决方案6】:

        这是 .cshtml 文件中唯一对我有用的文件:

        @Html.ActionLink(
           "Name", 
           "Action", 
           "Controller", 
           routeValues: null, 
           htmlAttributes:new Dictionary<string, object> {{ "onclick", "alert('Test');" }})
        

        我希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2014-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-13
          • 2017-06-16
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多