【问题标题】:How do I delete item using ASP.Net MVC如何使用 ASP.Net MVC 删除项目
【发布时间】:2011-04-12 06:46:59
【问题描述】:

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

如何让页面刷新?

【问题讨论】:

  • 旁注:请不要使用异常来控制逻辑流。出于多种原因,这是一种不好的做法。

标签: asp.net-mvc


【解决方案1】:

您的页面未刷新,因为 AJAX 调用不支持 302 - RedirectToAction() 在整个浏览器刷新时使用。如果您打算将 AJAX 用于删除链接,请查看 this post 以获取所有示例代码。完成后,它会执行一个 javascript window.location.reload();为了刷新页面。这遵循PRG pattern.

另一种方法是使用不使用 AJAX。这是an example

总体而言,您可以坚持使用 AJAX 方法。

【讨论】:

  • 对问题的良好解释和完整解决方案的链接。谢谢。
【解决方案2】:

另一种方法是通过 javascript 删除该 control/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 请求成功完成时调用该方法。

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2020-05-13
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多