jQuery Mobile ajax链接在ASP.NET MVC应用程序中无法正常工作

时间:2013-06-04 18:53:48

标签: asp.net-mvc jquery-mobile

我有一个看起来像这样的主布局

<html>
    <head>
        ...
    </head>

<body>
    <section data-role="page" data-theme="d">
        <section data-role="content">
            @RenderBody()
        </section>
    ...
    @Scripts.Render("~/bundles/jquery.mobile")
    </section>
</body>
</html>

我有几个控制器和模板将一些代码推送到主布局的内容部分。

当我点击链接时:

<a href="/Orders/EditOrder/14960">Some order</a>

显示了ajax加载程序,url发生了变化,但我看到的只是原始页面的破坏标记。如果我检查代码,我将看到DOM中有两个页面部分(这意味着目标页面已成功注入但未显示)。 如果我刷新页面,我将看到目标页面。

那有什么不对?为什么我不能得到花哨的JQM页面转换?谢谢。

1 个答案:

答案 0 :(得分:0)

在负责将您重定向到另一个页面的链接上添加data-ajax ='false'。

JQuery Mobile使用AJAX导航,除非您另有说明。 ASP.NET重定向对正常请求没有问题,但会导致AJAX问题。所以我在这种情况下的答案是关闭AJAX。为此,您所要做的就是将属性data-ajax ='false'添加到标记中。

在我的情况下,一个简单的解决方案可能是(因为更改每个Html.ActionLink / Url.Action非常耗时),在_Layout.cshtml的末尾添加它(在关闭'body'标签之前)。

$(document).on('pageinit', function() {
  $('a').each(function() {
  $(this).attr("data-ajax", "false");
 });

});

如果您不希望jQuery mobile也使用带链接的任何Ajax,那就没关系了。 在大多数情况下,您可以继续使用Ajax,只有选择性地将其关闭才能导致问题。