4

jquery-mobileアプリを備えたasp.netmvc4があります。

1つのページ(url:/ StatementBatch)に、バッチのリストがあります。これは、バッチの詳細ページ(url:/ StetementBatch / Details / 4)へのリンクです。

<li>
    <a href="/StatementBatch/Details/4">
        <h3>January 2012</h3>

        <div style="float: right; width: 30%;"><strong>Issued  : </strong>1/10/2012 12:00:00 AM</div>
        <div style="float: right; width: 30%;">Completed</div>

        <p class="ui-li-aside"><strong>1277</strong></p>
    </a>


</li>

奇妙なことに、リンクがクリックされ、詳細ページが表示されると、ブラウザの現在のURLが現在のURLになりますhttp://localhost:49457/StatementBatch#/StatementBatch/Details/4

この動作を修正するには、アプリで何を変更する必要がありますか?

私の推測では、これはある種のajax読み込み関連の問題ですが、共有の_Layout.cshtmlファイルにはが含まれています$.mobile.ajaxEnabled = false;。これはすべてのajax読み込みを強制終了すると予想していましたが、明らかにそれを誤って解釈しました。

ありがとう!

4

3 に答える 3

4

これが答えかもしれないと思う

jQuery Mobile ajaxEnabledが機能しませんか?

テストして、動作させることができるかどうかを確認します

mobileinitバインディングをjqueryの後、ただしjquery-mobileの前に移動します。これは、MVC4の(新しい)モバイルWebアプリケーションテンプレートのバグのようです。このテンプレートは、すべてのスクリプトを単純にバンドルしています。

これは失敗します...

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

<script>
    $(document).bind("mobileinit", function() {
        // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
        // when navigating from a mobile to a non-mobile page, or when clicking "back"
        // after a form post), hence disabling it.
        $.mobile.ajaxEnabled = false;
    });
</script>

しかし、これは機能します。

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />

<script src="../../Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>

<script>
    $(document).bind("mobileinit", function() {
        // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
        // when navigating from a mobile to a non-mobile page, or when clicking "back"
        // after a form post), hence disabling it.
        $.mobile.ajaxEnabled = false;
    });
</script>

<script src="../../Scripts/jquery.mobile-1.1.0.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<script src="../../Scripts/modernizr-2.5.3.js" type="text/javascript"></script>

ありがとう...

于 2012-05-07T19:20:28.303 に答える
1

これは、jQuerymobileを使用する場合のデフォルトの動作です。jQuery mobileを使用すると、すべてのリンクをajax化できます。これは、リンクされたページのコンテンツをajax経由でロードし、URLを更新することを意味します。リンクを無効にする場合は、値としてrel属性を追加できますexternal

<a href="somepagep.aspx" rel="external">This will open without ajax</a>

これにより通常のページが開かれるため、新しいページに基づいてURLが更新されます。

または、使用することもでき data-ajax="false"ます

<a href="somepagep.aspx" data-ajax="false">This link also will open without ajax</a>

このリンクには、それに関する詳細情報がありますhttp://jquerymobile.com/test/docs/pages/page-links.html

于 2012-05-07T17:49:33.917 に答える
0

それ、変だよ。が設定されている場合$.mobile.ajaxEnabled = false;、ajaxリンクは生成されません。ビューがこの設定を有効にしている他のマスターページを使用しているかどうかを確認してください。対応するビューディレクトリの下で「_ViewStart.cshtml」を探して、リンクされているマスターを確認します。

特定のハイパーリンクのAjax動作を無効にするには、 data-ajax="false"属性を使用します。以下のように

<a href="/StatementBatch/Details/4" data-ajax="false">
   <h3>January 2012</h3>
   <div style="float: right; width: 30%;"><strong>Issued  : </strong>1/10/2012 12:00:00 AM</div>
   <div style="float: right; width: 30%;">Completed</div>
    <p class="ui-li-aside"><strong>1277</strong></p>
</a>
于 2012-05-07T17:46:21.103 に答える