如何使用ASP.Net MVC删除项目

时间:2010-09-14 16:50:21

标签: asp.net-mvc

在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只适用于不同的页面,而不是同一页面。

如何刷新页面?

2 个答案:

答案 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请求成功完成时调用该方法。