jQuery Mobile 无法与 MVC RedirectResult 一起使用

发布于 2024-10-20 21:02:46 字数 1476 浏览 3 评论 0 原文

我在 MVC 3 网站上使用 jQuery Mobile。工作正常,只是我有一个链接到返回 RedirectResult 的控制器操作的标签。看起来 jQuery 正在拦截链接,并且每次都会出错。我收到移动框架输出的标准“发生错误”消息。使用 Firebug 检查响应显示响应完全是空的。

我听说我可能需要添加一个 data- 属性到标签中以使移动用户界面忽略它?对此或其他解决方案有什么想法吗?

编辑:只是为了澄清,该 URL 已正确生成并且是有效的 URL,它与 jQUery mobile 拦截请求的方式有关。

<a href='/[email protected]["URL"]' title="view full site" >view full site</a>

public RedirectResult FullSite()
                {
                    StringBuilder redirectUrl = new StringBuilder("http://www.site.com/");

                    try
                    {
                        string referringUrl = Request.QueryString["p"];

                        if (!String.IsNullOrEmpty(referringUrl) && referringUrl.Contains("photo-gallery"))
                            referringUrl = referringUrl.Replace(@"/photo-gallery", String.Empty);

                        redirectUrl.Append(referringUrl);
                    }
                    catch (Exception)
                    {
                        redirectUrl.Clear();
                        redirectUrl.Append("http://www.site.com");
                    }

                    CookieManager.SetMobileToFullSiteCookie();
                    return new RedirectResult(redirectUrl.ToString());
                }

I'm using jQuery Mobile on an MVC 3 website. Working well except that I have an tag that links to a controller action that returns a RedirectResult. It looks like jQuery is intercepting the link and it errors out every time. I get the standard "An error has occurred" message that the mobile framework outputs. Inspecting the response with Firebug shows the response is totally empty.

I've heard there might be a data- attribute I need to add to the tag to make the mobile UI ignore it? Any ideas on that or other solutions?

EDIT: Just for clarification, the URL is being generated correctly and is a valid URL, it has something to do with the way jQUery mobile is intercepting the request.

<a href='/[email protected]["URL"]' title="view full site" >view full site</a>

public RedirectResult FullSite()
                {
                    StringBuilder redirectUrl = new StringBuilder("http://www.site.com/");

                    try
                    {
                        string referringUrl = Request.QueryString["p"];

                        if (!String.IsNullOrEmpty(referringUrl) && referringUrl.Contains("photo-gallery"))
                            referringUrl = referringUrl.Replace(@"/photo-gallery", String.Empty);

                        redirectUrl.Append(referringUrl);
                    }
                    catch (Exception)
                    {
                        redirectUrl.Clear();
                        redirectUrl.Append("http://www.site.com");
                    }

                    CookieManager.SetMobileToFullSiteCookie();
                    return new RedirectResult(redirectUrl.ToString());
                }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眉黛浅 2024-10-27 21:02:46

我使用 rel="external" 强制链接作为正常请求加载,而不是使用 AJAX。

<a href='/fullsite?pRequest.ServerVariables["URL"]'
   rel="external"
   title="view full site" >view full site</a>

您还可以使用 data-ajax="false" 或为 target 设置一个值,请参阅 http://jquerymobile.com/demos/1.0a3/docs/pages/link-formats.html

I use rel="external" to force links to load as a normal request instead of using AJAX.

<a href='/fullsite?pRequest.ServerVariables["URL"]'
   rel="external"
   title="view full site" >view full site</a>

You can also use data-ajax="false" or set a value for target, see the docs for 1.0a3 at http://jquerymobile.com/demos/1.0a3/docs/pages/link-formats.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文