RedirectToAction没有刷新页面

时间:2009-08-21 08:12:01

标签: asp.net asp.net-mvc

我有一个场景,我在一个视图页面并在控制器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 个答案:

答案 0 :(得分:9)

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

使用:

装饰ActionInControllerB和ActionInControllerA方法
[OutputCache(Location=System.Web.UI.OutputCacheLocation.None)]

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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