我有一个 ajax链接,用于删除列表中的项目。
以下是观点:
@Ajax.ActionLink("Test", "Delete", new { projectID = item.ProjectID }, new AjaxOptions
{
Confirm = "Are you sure you want to delete this item?",
HttpMethod = "DELETE",
OnSuccess = "function() { alert('ok'); }"
})
这是动作控制器:
[AcceptVerbs(HttpVerbs.Delete)]
public ContentResult Delete(int projectID)
{
Project proj = m_ProjectBusiness.GetProject(projectID);
if (proj != null)
{
m_ProjectBusiness.DeleteProject(proj);
}
return null;
}
显示确认信息。
调用动作控制器。
视图显示回来
但是没有触发OnSuccess事件!
答案 0 :(得分:2)
可能是请求的那部分失败了(虽然会很奇怪)我希望它是一个全有或全无的过程,你试过实施 OnFailure 属性吗?
我发现成功在https://stackoverflow.com/a/1183985/208565取得成功的一个很好的观点虽然你根本没有被调用。如果调用OnFailure,将很高兴看到返回的状态代码。
答案 1 :(得分:2)
确保您已将以下脚本包含在您的页面中:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"> </script>
并且您已在web.config中启用了不显眼的javascript:
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
这就是使Ajax。*助手如Ajax.BeginForm,验证工作的原因。
答案 2 :(得分:0)
我认为它应该是C#意义上的委托而不是实现:
点击此链接http://squarewidget.com/Delete-Like-a-Rock-Star-with-MVC3-Ajax-and-jQuery
答案 3 :(得分:0)
很可能你没有回复正确的答案,ajax解释和理解。尝试使用调试器控制台查看确切的答复,并相应地进行修复。