在MVC 4移动应用程序中的Response.Redirect

时间:2013-02-01 13:28:37

标签: asp.net-mvc asp.net-mvc-4 jquery-mobile

我正在使用ASP.NET mvc 4开发一个移动Web应用程序。我正面临来自我的控制器的response.redirect到其他网站(例如:http://www.google.com)的问题,它显示“错误加载页面”没有重定向的消息。

我在家庭控制器的“关于”操作下尝试了以下代码重定向:

return Redirect("http://www.google.com"); 

return RedirectResult("http://www.google.com");

response.Redirect("http://www.google.com");

以上所有都产生了同样的错误。

注意:视图页面中的超链接工作正常

谢谢

2 个答案:

答案 0 :(得分:2)

当您设置指向控制器的链接时......您需要确保data-ajax属性设置为false

<a href="/MyRedirectingController" data-ajax="false">Redirect</a>

我的理解是jQuery mobile将所有锚定请求包装在ajax中,除非另有说明,并且你的response.redirect只是被提供给jQuery .done函数,它无法正确处理它。

http://jquerymobile.com/demos/1.2.0/docs/pages/page-navmodel.html

  

重要:rel =“external”和$ .mobile.ajaxEnabled = false

     

各种各样的replaceState API的实现略有不同   浏览器可能会导致特定情况下的奇怪行为例如,   一些浏览器实现(包括桌面浏览器)实现   当外部链接和向后移动时,popstate事件的方式不同   到已经推送/替换状态的页面。什么时候   构建Ajax导航所在的jQuery Mobile应用程序   被明确禁用,要么经常使用   链接上的rel =“external”或通过完全禁用Ajax导航   $ .mobile.ajaxEnabled = false,我们建议禁用pushState   功能可以回退到基于哈希的导航,以获得更一致的功能   行为。

答案 1 :(得分:0)

我怀疑您的问题是您正在重定向到本地网站之外。

请参阅文档的这一部分:http://jquerymobile.com/test/docs/pages/page-navmodel.html

  

jQuery Mobile创建的哈希值被标准化为完整路径   相对于已加载的第一个“真实”页面的URL。

之后它确认了“本地”要求:

  

单击链接时,jQuery Mobile将确保链接是   引用本地URL

我认为解决方案是不将用户重定向到其他域。

<强>更新

上述解决方案突出了问题的错误部分,但解决方案可能仍然相同。您应该使用javascript进行重定向,例如:

window.location = 'http://www.google.com/';

我相信如果您的JQM解决方案尝试进行ajax调用然后重定向,您将遇到问题。一个问题,特别是针对google.com,可能是您登录谷歌。然后,它会将您重定向到https。这可能会干扰JQM / window.location.hash