【问题标题】:RedirectToAction not working in a particular action (process)RedirectToAction 在特定操作(进程)中不起作用
【发布时间】: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 我必须重定向到的路径。它一直显示加载标志,在萤火虫中没有进一步移动。

我怀疑请求正在发出但没有重定向。

【问题讨论】:

    标签: c# ajax model-view-controller


    【解决方案1】:

    “发送 HTTP 标头后无法重定向”错误表示您已经开始向客户端返回 HTTP 响应。因此,您现在无法重定向它。更早地查看您的控制器方法,看看它是否向客户端返回任何内容并更早地移动重定向检查。

    唯一看起来奇怪的另一件事是您在控制器之前有视图(默认为 /{controller}/{view}),但也许您的路由是这样设置的。

    【讨论】:

    • ,即使向上面的客户返回某些东西,在某些情况下,在任何情况下,只有一个返回将执行,在此必须执行。但我没有……r 否则你能详细解释一下吗……
    • @mandava - 很难说没有看到处理移动设备的 HomeController 函数的其余部分。可以发一下代码吗?
    • 你想看什么代码是我们重定向的动作还是我们重定向的动作
    • 即使是 http 错误也只有在我免费播放或调试带有断点的几个步骤时才会出现.....如果我调试整个过程直到最后我看不到那个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多