【问题标题】:RedirectToAction not refreshing the pageRedirectToAction 不刷新页面
【发布时间】:2009-08-21 08:12:00
【问题描述】:

我有一个场景,我在一个视图页面上并调用控制器 A 中的一个操作方法,该方法通过 RedirectToAction 返回调用控制器 B 中的另一个操作,并且此操作返回我已经打开的视图。

我希望刷新页面以反映这两个操作对系统状态所做的更新,但 MVC 似乎决定在我返回同一视图时不需要刷新页面。如何强制刷新?

例子:

//user is on A/index, and submits a form that calls this in contoller B
public ActionResult ActionInControllerB()
{
     //do stuff
     return RedirectToAction(ActionNames. ActionInControllerA, ControllerNames.A);
}

public ActionResult ActionInControllerA()
{
     //do stuff
     return View("index");
}

【问题讨论】:

  • 你在做什么听起来很合理,是的,结果没有意义。你能把这两种方法的代码粘贴到 2 个不同的控制器中吗?
  • 按照您的要求添加了代码。谢谢大卫
  • 嗯,是的,怀疑那里没什么奇怪的。看看你对下面我的回答的看法......
  • 你怎么称呼这个动作?您可以粘贴请求和响应标头吗? (来自 Fiddler 或 Firebug。)

标签: asp.net asp.net-mvc


【解决方案1】:

我有类似的问题,但它是从视图文件到控制器文件的 ajax 调用开始的。控制器对数据库进行了更新,然后调用 RedirecToAction 以刷新视图。但是没有刷新... 上面的答案都没有帮助我。我可以解决它的唯一方法是使用不同的方法从视图文件中调用操作:

window.location = "Experiment/DeleteExperiment?experimentId=" + $("#DeleteExperimentButton").val();

从那时起,一切都按我的预期行事。

【讨论】:

    【解决方案2】:

    我猜你遇到了缓存问题。

    使用以下方法装饰您的 ActionInControllerB 和 ActionInControllerA 方法:

    [OutputCache(Location=System.Web.UI.OutputCacheLocation.None)]
    

    【讨论】:

      【解决方案3】:

      我在这里会有点含糊,因为我不太确定,但我以前见过类似的东西(没有其他人回答)。问题可能是在重定向之前尚未处理或刷新更新事务。例如,NHibernate 有时会等待对数据库进行更新,直到我认为在处理响应之后。

      如果是这种情况,那么无论您在控制器 A 中执行的任何获取操作都不会获取更改。也许您可以尝试以某种方式强制处理数据库提交。

      抱歉,这是我能想到的唯一可能性。你必须穿上你的 google-fu 服装和头带!

      【讨论】:

      • 不幸的是,这不是问题所在。我的 ORM 已经完成了所有工作,并且在任何一种情况下都应该出现其他客户端位。
      • 哦,好吧 :-( 如果你真的被卡住了,你可以尝试 Response.Redirect(Request.Url.ToString()) 但如果这样可行,那么它是一种解决方法,而且很麻烦。
      【解决方案4】:

      我的项目中遇到过这样的问题。可能会发生什么,我假设您正在更新 ActionInControllerB 中的视图,然后当您 RedirectToAction 时,它正在清除该视图。我遇到了这样的问题,我没有在我的 GET: 控制器中更新,而只是在 POST: 控制器中更新。因此,我想要展示的东西没有出现。因此,我建议您确保对显示的更改发生在正确的位置。

      我对 MVC 相当陌生,所以我可能只是误读了您的问题,如果我是,对不起。但是,我希望这至少对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-09-12
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 2012-08-10
        • 2011-04-28
        • 2015-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多