为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在Asp.net MVC 2的子操作中不允许重定向结果

为什么在Asp.net MVC 2的子操作中不允许重定向结果

繁星淼淼 2019-10-21 13:04:19
我有一些使用Asp.Net Futures RenderAction方法呈现的部分动作。其中一些在处理表单中的表单后执行重定向。现在,我已升级到Asp.Net MVC 2 RC,它给我一个错误“不允许子操作执行重定向操作”。我签出了源代码,并发现了引发异常的行。为了解决这个问题,我可以创建一个自定义的RedirectResult,但是在我开始之前,我想了解为什么框架首先不允许它。一定有很好的理由,也许我也不应该这样做。有人知道这种限制的原因吗?谢谢
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

存在限制是因为MVC已经开始向客户端呈现视图。从这一点重定向的效果是不确定的。它可以完美地工作,可以继续呈现原始视图而无需重定向,它可以引发其他异常等。

由于执行此操作的结果是不确定的,因此框架会阻止它。实际上,出于类似的原因,不应使用RenderAction呈现视图(或类似视图的内容)以外的任何内容。

在您的特定情况下,外部操作应重定向。如果您最终还是要从视图内进行重定向而又不向用户显示任何内容,那么实际上没有任何目的首先浏览视图,因为外部操作可以适当地将工作委托给它拥有。


查看完整回答
反对 回复 2019-10-21
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

尝试在“儿童操作”中使用类似以下内容:


ControllerContext.HttpContext.Response.Redirect(ControllerContext.HttpContext.Request.Url.ToString());


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 829 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信