2012-05-03 13 views
4

jquery-mobileアプリでasp.net mvc 4を使用しています。ajaxリンクが誤って処理されています

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は今http://localhost:49457/StatementBatch#/StatementBatch/Details/4

であるということですか?

私の推測では、何らかのAjax読み込みに関連する問題ですが、私の共有_Layout.cshtmlファイルには、すべてのAjax読み込みを中止すると予想される$.mobile.ajaxEnabled = false;が含まれていますが、明らかに誤解しています。

ありがとうございます!

答えて

4

私はこれが

jQuery Mobile ajaxEnabled doesn't work?

答えはテストして表示されますかもしれ疑いを持ってい

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

同様

data-ajax="false"を使用することができます私はそれを動作させることができる場合

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> 

ありがとう...

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> 
+0

いいえ、その$ .mobile。ajaxEnabled = falseマスタレイアウトページからのISです。上記ですでに参照されているものだけです。私はすでにデータをどのようにするかを知っていました - ajax = "false" ...なぜ私はそれを考えているように見えないのですか? ... – reidLinden

1

これは、jQueryモバイルを使用する場合のデフォルトの動作です。 jQuery Mobileはすべてのリンクを有効にします。つまり、リンクされたページのコンテンツをajax経由で読み込んでURLを更新します。あなたはajaxifiedするためのリンクを無効にしたい場合は、external

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

rel属性を追加することができ、あなたのURLが新しいページに基づいて更新されますので、これは、通常のページの開放を行います。

またこのリンクは、それについての詳細情報http://jquerymobile.com/test/docs/pages/page-links.html

+0

これは "$ .mobile.ajaxEnabled = false;"それに入っていない? – reidLinden

+0

は、すべてのリンクを無効にするグローバルレベルの設定です。これらの属性を追加すると個々のリンクが無効になります。 – Shyju

+0

をよく理解しています。本当の問題は、(もし私がそれらをすべて無効にしてしまえば、私はそれを個々のリンクで無効にする必要はないはずです)...どうして一般的なディセーブル動作が来るのですか?(新しいMVCモバイルプロジェクト)実際にそれらを無効にすることはありません....私はそれが正解になるように思われる別の答えを掲載しましたが、私はそれをテストできることに取り組んでいます.. – reidLinden

関連する問題