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 不刷新页面

RedirectToAction() 丢失请求数据

如何在 Asp.NET MVC 中使用 RedirectToAction() 传递多个对象?

回发后的 MVC3 RedirectToAction

MVC - 使用 RedirectToAction() 传递数据