javascript - 在 MVC Javascript 函数中,使用 Ajax.ActionLink 不会触发

标签 javascript jquery ajax asp.net-mvc-4 razor

问题陈述: 无法从 Ajax Action Link 触发 JavaScript 函数,但我可以使用 html.actionlink 触发相同的 JavaScript 函数

我在做什么: 实际上,我在每行上都有详细信息网格和用于删除的链接,单击删除时我想使用 Javascript/Jquery 函数将值传递给名为“删除”的操作结果。

我试图避免的事情: 单击删除时,它不应导航到新网址,因为它发生在 html.actionlink 中,因此我为此使用 ajax.actionlink:

请查找图片供您引用:

enter image description here

查看:

<table class="table">
        <tr>

             <th>
                @Html.DisplayNameFor(model=> model.RequestedBy)
            </th>
             <th>
                @Html.DisplayNameFor(model=> model.Description)
            </th>
            <th>
                @Html.DisplayNameFor(model=> model.Name)
            </th>
             <th>
                @Html.DisplayNameFor(model=> model.FromDate)
            </th>
             <th>
                @Html.DisplayNameFor(model => model.ToDate)
            </th>

        </tr>
        @if (Model!= null)
        {
            foreach (var item in Model)
            {
            <tr>

                <td>
                    @Html.DisplayFor(modelItem => item.RequestedBy,new { id="lstRequestedBy"})
                    @Html.Hidden("#RequestedBy") 
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Description)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.FromDate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.ToDate)
                </td>
                <td>    

                     @Ajax.ActionLink("Delete","Delete","Request",
                     new AjaxOptions 
                     {
                         OnBegin="return DeleteAsset()",
                         HttpMethod = "POST"
                     })
                     @*@Html.ActionLink("Delete","Delete","Request", new { onclick="DeleteAsset()"})*@
                </td>
            </tr>
            }
        }

    </table>

Javascript:

<script type='text/javascript'>

    function DeleteAsset() {
        var RequestedBy= $('#lstRequestedBy').val();
        $('#RequestedBy').val(RequestedBy);

    }
</script>

Controller :

  public ActionResult Delete(string RequestedBy)
  {
      //Want to perform some action here based on RequestedBy
   }

我在这里做错了什么?

为什么java脚本函数没有被ajax.actionlink触发,而是使用html.actionlink触发?

如果有人提供替代方案也没关系???

最佳答案

就我个人而言,我喜欢自己进行 ajax 调用。

<td>    
    // prevent the link from doing something. You can also use evet.preventDefault in the click event.
    <a href="javascript:void(0)" data-requestedby="@item.RequestedBy" >Delete</a>

</td>


$("[data-requestedby]").click(function () {
    var row = $(this).closest("tr");
    $.ajax({
         url: "Delete/Delete",
         data : { RequestedBy : $(this).attr("data-requestedby")  } ,
         success:function(result){
             // probably remove the row;
             $(row).remove();
         }
    });

});

代码未经测试,但我希望您能明白。

关于javascript - 在 MVC Javascript 函数中,使用 Ajax.ActionLink 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655248/

相关文章:

javascript - 单击单个按钮即可打开 2 个弹出窗口

jquery - 使用 jQuery 切换多个命令

java - 如何使用Ajax显示在线用户

Jquery dataTables 列过滤器插件不起作用

javascript - 使用 ASCII 代码的虚拟键盘

javascript - 查找标签之间的特定值

javascript - 正则表达式 - 如何过滤数字和 "-"?

php - MySQL:通过if语句选择奇数行

JQuery Ajax 调用未将参数传递给 ASP.NET Core MVC 中的 `Controller Method`?

javascript - XMLhttprequest.send() 不向 PHP 发送变量