1

当我RedirectToAction("MyView", "MyController")有时使用重定向时,渲染目标视图的速度非常慢。

它并不总是发生。

我正在使用 ASP.net MVC4 和 IIS7.5

如何防止此问题并加快重定向?

4

4 回答 4

0

我会把它放在这里,因为代码在评论部分不会很好地显示。如果您要重定向到的操作方法位于您当前所在的同一控制器中,则直接调用该方法并返回其结果而不是由 RedirectToAction 方法生成的重定向响应更简单、更有效。只是为了确保我们在同一页面上,RedirectToAction 实际上会向客户端返回重定向响应 (302),要求它向您根据 MSDN http://msdn.microsoft.com/指定的操作方法发出新请求en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.108).aspx。一些代码来说明:

public ActionResult MyAction(){
    //do some work here
    Return View(MyModel);
}

public ActionResult ActionIAmCurrentlyIn(){
    //Do Soe work here
    return RedirectToAction ("MyAction", "MyController"); //This costs an extra trip across the wire
    return MyAction(); // Does same thing but without the extra trip to the client
}

如果将参数传递给“MyAction”并且随着网络速度的下降,额外行程的这种开销会变得更加重要。

于 2013-08-26T13:19:23.290 回答
0

为了防止这个问题并加快重定向使用:

return Redirect("~/MyController/MyView");

这种方法不会改变客户端-服务器交互。

于 2015-04-15T14:49:23.590 回答
0

回复为答案,因为我没有足够的代表来添加评论...

@JTMon 在你的代码中“return MyAction();” 可能会导致潜在的问题,因为“MyAction”操作实际上会尝试加载一个名为“ActionIAmCurrentlyIn”的视图,因为这是在路由值中指定的操作(至少我假设它是从那里获取它的,我实际上并没有挖掘进入代码找出)。

这可以通过在 MyAction 中指定视图名称来解决:

 return view("MyAction", MyModel);
于 2013-12-27T16:35:43.910 回答
-1

你可以使用RedirectToActionPermanent("View","Controller");它。

于 2013-08-26T09:32:55.717 回答