首页 文章

RedirectToAction没有刷新页面

提问于
浏览
9

我有一个场景,我在一个视图页面,并在控制器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");
}

4 回答

  • 9

    我猜你正在遇到缓存问题 .

    使用以下命令装饰ActionInControllerB和ActionInControllerA方法:

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

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

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

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

  • 1

    我在这里会有点模糊,因为我不太确定,但我之前已经看过这些内容(没有其他人在回答) . 可能的问题是在重定向之前尚未处理或刷新更新事务 . 例如,NHibernate有时会等待对db进行更新,直到我认为在处理响应之后 .

    如果是这种情况,那么无论你在控制器A中进行什么操作都没有获取更改 . 也许您可以尝试以某种方式强制处理数据库提交 .

    对不起,但这是我能想到的唯一可能性 . 你将不得不穿上你的google-fu服装和头带!

  • 0

    我的项目有这样的问题 . 可能会发生什么,我假设你是在ActionInControllerB中更新你的视图然后当你RedirectToAction它正在清除该视图 . 我有一个这样的问题,我没有在我的GET:控制器更新,只在POST:控制器更新 . 因此,我想要显示的内容没有出现 . 因此,我建议您确保对显示的更改发生在正确的位置 .

    我对MVC很新,所以我可能会误解你的问题,如果我是,抱歉 . 但是,我希望这至少可以帮助你 .

相关问题