我正在使用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");
以上所有都产生了同样的错误。
注意:视图页面中的超链接工作正常
谢谢
答案 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
。