在MVC中删除项目的最佳方法是什么?我有一个项目清单。每行都包含一个“删除”链接。我希望删除链接提示确认,然后从数据存储区中删除该项目并使用新数据刷新页面。
这是我的观看代码:
<%: Ajax.ActionLink(
"Delete"
,"Delete"
, new { id=item.FooId}
, new AjaxOptions()
{
Confirm="Are you sure that you want to delete this item?"
, HttpMethod = "post"} ) %>
这是我的控制器代码:
[HttpPost]
public ActionResult Delete(int id)
{
try
{
var success = FooService.Deletefoo(id);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
正在删除记录,但页面不刷新。我唯一能想到的是RedirectToAction只适用于不同的页面,而不是同一页面。
如何刷新页面?
答案 0 :(得分:6)
您的页面没有刷新,因为AJAX调用不会遵循302 - 当整个浏览器刷新时使用RedirectToAction()。如果您要将AJAX用于删除链接,请查看this post以获取所有示例代码。完成后,它会执行一个javascript window.location.reload();为了刷新页面。这遵循PRG pattern.
另一种方法是不使用AJAX。这是an example。
总的来说,你很好地坚持使用你的AJAX方法。
答案 1 :(得分:0)
另一种方法是通过javascript删除该控件/ html元素。您可以在Ajax请求完成时调用此脚本。
<%: Ajax.ActionLink(
"Delete"
,"Delete"
, new { id=item.FooId}
, new AjaxOptions()
{
OnSuccess="deleteElement"
,Confirm="Are you sure that you want to delete this item?"
, HttpMethod = "post"} ) %>
OnSuccess
选项告诉Ajax帮助程序在ajax请求成功完成时调用该方法。