RedirectToAction 在特定操作(进程)中不起作用
Posted
技术标签:
【中文标题】RedirectToAction 在特定操作(进程)中不起作用【英文标题】:RedirectToAction not working in a particular action (process) 【发布时间】:2012-12-06 10:48:15 【问题描述】:我有一个 Ajax 调用,它将在控制器中的表单提交上调用一个名为 submit
的操作..
下面是这样的:
if (CSConfigurationMgr.IsMobileUrl(Request.UrlReferrer.AbsoluteUri.PathFromURL()))
return RedirectToAction("home", "mobile", new success = true);
它重定向到主页并显示“谢谢”消息。
我尝试将 url 设置为 xxxxxxx/mobile/home?success=true
并按预期工作。
我对这种情况感到满意并准备返回声明,但我没有被重定向到新页面。
我检查了路线,没有发现问题。
我通过将RedirectToAction
放在另一个操作中进行检查,它工作正常,我被重定向到新页面。但它在这里不起作用。
错误:
Cannot redirect after HTTP headers have been sent
:有时会出现(移动浏览器)
什么都没有发生,只是停留在同一页面上
此外,我尝试在 firebug 中进行调试。拨打电话后,我得到了流程:
www.test.com
只是我的本地主机及其端口号
POST http://www.test.com/forms/submit
这是传递数据的正确路径
GET http://www.test.com/mobile/home?success=true
我必须重定向到的路径。它一直显示加载标志,在萤火虫中没有进一步移动。
我怀疑请求正在发出但没有重定向。
【问题讨论】:
【参考方案1】:“发送 HTTP 标头后无法重定向”错误表示您已经开始向客户端返回 HTTP 响应。因此,您现在无法重定向它。更早地查看您的控制器方法,看看它是否向客户端返回任何内容并更早地移动重定向检查。
唯一看起来奇怪的另一件事是您在控制器之前有视图(默认为 /controller/view),但也许您的路由是这样设置的。
【讨论】:
,即使向上面的客户返回某些东西,在某些情况下,在任何情况下,只有一个返回将执行,在此必须执行。但我没有……r 否则你能详细解释一下吗…… @mandava - 很难说没有看到处理移动设备的 HomeController 函数的其余部分。可以发一下代码吗? 你想看什么代码是我们重定向的动作还是我们重定向的动作 即使是 http 错误也只有在我免费播放或调试带有断点的几个步骤时才会出现.....如果我调试整个过程直到最后我看不到那个错误以上是关于RedirectToAction 在特定操作(进程)中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net MVC:使用 RedirectToAction() 将字符串参数传递给操作
ASP.NET MVC RedirectToAction 不刷新页面