RedirectToAction没有按预期刷新页面

本文关键字:刷新 RedirectToAction | 更新日期: 2023-09-27 18:18:01

我在这里做错了我的MVC代码吗?Index视图包含一个提交给自己的表单,我想让控制器处理提交的表单,然后返回给视图。

实际发生的是表单被正确处理,但是返回的View好像什么都没有发生(例如,已经删除的id仍然显示)。如果我手动刷新页面,它会再次正确显示。我认为这与浏览器缓存无关,因为从不同的控制器重定向到相同的视图工作得很好。我该怎么修理它?

    public ViewResult Index()
    {
        return View(GetComments());
    }

    [HttpPost]
    public ActionResult Index(int[] AllIds)
    {
        if (AllIds != null)
        {
            foreach (int id in AllIds)
            {
               // do stuff
            }
        }
        return RedirectToAction("Index");
    }

编辑:提交表单时,第一个方法上的断点没有被击中,并试图"Step Into (F11)",return RedirectToAction("Index");行只是直接移动到最终的}上。

RedirectToAction没有按预期刷新页面

为Firefox安装Fiddler或Firebug并观察流量,看看它是否真的返回一个新的响应或来自浏览器的HTTP 304(缓存页面)。

如果一切都检查出,那么你的数据库持久性和/或查询有问题。

你试过吗?我想知道,这取决于你如何持久化数据,如果它没有被保存,直到服务器返回响应…?

public ViewResult Index()
{ // breakpoint
    var comments = GetComments(); // debug and inspect the value of this variable
    return View(comments);
}

[HttpPost]
public ActionResult Index(int[] AllIds)
{
    if (AllIds != null)
    {
        foreach (int id in AllIds)
        {
           // do stuff
        }
    }
    return RedirectToAction("Index"); // breakpoint
} 

我知道有些人在MVC中使用IUnitOfWork,只在请求结束时调用ORM上的SaveChanges/Commit。是否有可能,//做的东西从集合中删除项目,但不坚持到数据库,直到GET索引()返回后?

不是返回RedirectToAction("Index"),你试过RedirectToAction(Index())了吗?

尝试输入控制器名称。这帮助了我。例如:

return RedirectToAction("Index","Home");