【发布时间】:2012-03-27 10:57:25
【问题描述】:
我有以下负责删除答案对象的 ajax.actionlink:-
<td>
@Ajax.ActionLink("Delete", "Delete", "Answer",
new { id = answer.AnswersID },
new AjaxOptions
{
Confirm = "Are You sure You want to delete this Answer ?",
HttpMethod = "Post",
UpdateTargetId = @answer.AnswersID.ToString(),
OnSuccess = "deleteconfirmation",
OnFailure = "deletionerror"
})
</td>
以及以下 deleteconfirmation.js :-
function deleteconfirmation() {
jAlert('The Answer was deleted succsfully', 'Deletion Confirmation');
$(this).remove();
}
如果 ajax.actionlink 将调用以下操作方法:-
[HttpPost]
public ActionResult Delete(int id)
{
var a = repository.FindAnswer(id);
repository.DeleteAnswer(a);
repository.Save();
return Content("");
assessments.");
}
但我面临以下问题:-
如果我用firefox浏览器删除了一个对象,
jAlert('The Answer was deleted succsfully', 'Deletion Confirmation');不会显示,而用IE会显示,请问是什么原因?我浏览到显示答案对象的预期网页,然后我从数据库中手动删除答案对象,然后单击已删除对象后面的删除 ajax 链接(刷新页面之前),所以我期待 onfailure 脚本将被执行,但它没有,而是引发了一个空异常。
有没有办法提供一个 jquery 确认框而不是
Confirm = "Are You sure You want to delete this Answer ?",BR
*编辑:- * 非常感谢您的详细回答,但我有以下几点需要澄清:-
在您的删除控制器操作中,您将返回一个空内容 (return Content("")) 但您已经定义了一个 UpdateTargetId = @answer.AnswersID.ToString() 在您的链接中,这使 FireFox 抛出 错误,因为您无法在 DOM 中插入空内容
我从操作方法返回一个空字符串,因为删除后我不需要向用户显示任何内容,因为我正在使用 $(this).remove(); 从 DOM 中删除已删除的对象,所以部分视图应该是什么@ 987654327@ 在这种情况下包含?
另一方面,如果您在服务器上处理此异常并且 使用它而不离开它传播并返回 200 HTTP 状态 代码
但在我的情况下,action 方法没有处理空指针异常,但另一方面,如果引发空指针异常,则不会执行 Ajax.Actionlink onFailure!。
再次感谢您的帮助..
【问题讨论】:
标签: jquery ajax asp.net-mvc-3