当我使用RedirectToAction("MyView", "MyController")
时,有时重定向很慢,无法呈现目标视图。
并非总是如此。
我正在使用带有IIS7.5的ASP.net MVC4
如何防止此问题并加快重定向?
答案 0 :(得分: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”并且网络速度下降,额外旅行的开销会变得更加显着。
答案 1 :(得分:0)
作为答案回应,因为我没有足够的代表添加评论......
@JTMon在你的代码中“return MyAction();”可能导致潜在问题,因为“MyAction”操作实际上会尝试加载一个名为“ActionIAmCurrentlyIn”的视图,因为这是在路由值中指定的操作(至少我认为它是从它获取它的地方,我实际上没有挖过进入代码找出来。)
这可以通过在MyAction中指定视图名称来解决:
return view("MyAction", MyModel);
答案 2 :(得分:0)
要防止出现此问题并加快重定向使用,请执行以下操作:
return Redirect("~/MyController/MyView");
此方法不会改变客户端 - 服务器交互。
答案 3 :(得分:-1)
您可以使用RedirectToActionPermanent("View","Controller");
。