0

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

<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 页面转换?谢谢你。

4

1 回答 1

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,并且只在可能导致问题的地方选择性地关闭它。

于 2013-11-17T13:01:20.487 回答