我有一些使用Asp.Net Futures RenderAction方法呈现的部分动作。其中一些在处理表单中的表单后执行重定向。现在,我已升级到Asp.Net MVC 2 RC,它给我一个错误“不允许子操作执行重定向操作”。我签出了源代码,并发现了引发异常的行。为了解决这个问题,我可以创建一个自定义的RedirectResult,但是在我开始之前,我想了解为什么框架首先不允许它。一定有很好的理由,也许我也不应该这样做。有人知道这种限制的原因吗?谢谢
3 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
存在限制是因为MVC已经开始向客户端呈现视图。从这一点重定向的效果是不确定的。它可以完美地工作,可以继续呈现原始视图而无需重定向,它可以引发其他异常等。
由于执行此操作的结果是不确定的,因此框架会阻止它。实际上,出于类似的原因,不应使用RenderAction呈现视图(或类似视图的内容)以外的任何内容。
在您的特定情况下,外部操作应重定向。如果您最终还是要从视图内进行重定向而又不向用户显示任何内容,那么实际上没有任何目的首先浏览视图,因为外部操作可以适当地将工作委托给它拥有。
子衿沉夜
TA贡献1828条经验 获得超3个赞
尝试在“儿童操作”中使用类似以下内容:
ControllerContext.HttpContext.Response.Redirect(ControllerContext.HttpContext.Request.Url.ToString());
- 3 回答
- 0 关注
- 853 浏览
添加回答
举报
0/150
提交
取消