问题陈述: 无法从 Ajax Action Link 触发 JavaScript 函数,但我可以使用 html.actionlink 触发相同的 JavaScript 函数
我在做什么: 实际上,我在每行上都有详细信息网格和用于删除的链接,单击删除时我想使用 Javascript/Jquery 函数将值传递给名为“删除”的操作结果。
我试图避免的事情: 单击删除时,它不应导航到新网址,因为它发生在 html.actionlink 中,因此我为此使用 ajax.actionlink:
请查找图片供您引用:
查看:
<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/