9

私は過去にASP.Netを開発してきましたが、最近までモバイルプロジェクトに出くわしました。Jquery-Mobileはこのためのフレームワークとして完璧に思えるので、私はそれに飛び込みました。

現在、ASP.Netアプローチを使用してサーバーコントロールをページに配置し、jqmを使用してそれらのコントロールを拡張してモバイルに見えるようにしています。私は実際にポストバックを実行してフォームデータを収集し、コードビハインドで処理します。ページ全体の更新を避けるために、私もそれらをupdatepanelと混合する必要がありました。どういうわけか私はそれらを機能させましたが、深く私はこれがそれを行う正しい方法(または効率的な方法)ではないと感じています。

それらを正しくするために物事を混ぜ合わせるのはあまりにも複雑なので、おそらく私はポストバックを避けてすべてを行うべきだと思います-それ以外の場合は純粋なAJAXリクエストですか?

$.ajax({
 type: 'POST',
  url: "/GetName",
  data: "{}",
  contentType: "application/json; charset=utf-8"

})
.success(function (response) {
  alert(response);
});

コードビハインド:

[WebMethod ()] 
public String GetName()
{ return "Jack"; }

質問:

  • これは機能しますが、これはjQuery-Mobile Webサイトを使用するためのより良い方法ですか、それともこれは単なる別の悪い例ですか?

  • UpdatePanelとポストバックはこのシナリオにとって悪い考えですか?(私は彼らが働くことを知っています)

  • AJAXが優先される場合、ページロード(サーバー制御ではない)にドロップダウンリストを設定するにはどうすればよいですか?$(document).ready()のドロップダウンリストにデータを入力するためにAJAXリクエストを送信するのは、私にはばかげているようです

私が探しているのは、モバイルサイトを開発するための経験則です。私は、正しく行うべきことから離れすぎないようにしたいと思います。あなたの入力は非常に高く評価されています。ありがとう。

4

1 に答える 1

13

asp.net Web フォームと jQuery Mobile は実際には連携しません。ポストバック モデルは、jQuery Mobile ajax の動作方法を壊し、複数のページまたはフォームがある場合に機能しなくなります。具体的には、Web フォームにはすべてのサーバー側コントロールをラップする単一の<form>タグが必要であり、追加の「内部」フォームを導入することはできません。<div data-role="page">jQuery Mobileは、DOM 内に含まれるajax モデルと 1 つまたは複数の「ページ」 ( ) およびフォームで実際に最適に機能します。更新パネルは最終的に混乱を引き起こします。

1 つの方法は、単純に jQuery Mobile の ajax 読み込みをオフにすることです。これでそれを行うことができます:

//note that the order of script loading here is critical.
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
    $(document).bind(“mobileinit”, function() {
        $.mobile.ajaxEnabled = false;
    });
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js">
</script>   

しかし、最終的には、非常に効率的な Web サイトにはなりません。サイトがローカル ワイヤレス ネットワーク上で実行されている場合は、それで十分な場合があります。

私は主に Web フォーム環境で作業しており、Web フォーム ベースの jQuery Mobile アプリが必要で、5 つほどの "ページ" を単一の静的 html ファイルとしてコーディングしていました。次に、ASMX Web サービス エンドポイントへの JavaScript と jQuery ajax の読み込みに依存しました。また、KnockoutJS を多用しましたが、JavaScript と jQuery ajax だけを使用してデータを取得することもできました (私の場合、アプリはデータ更新のないレポート機能でした)。同じテクニック。

<form>さらに優れたアプローチは、強制ポストバック モデルを排除し、タグの配置場所をきめ細かく制御できる asp.net MVC を使用することです。

私は大規模なモバイル サイトに取り組んでおり、バックエンドに MVC を使用し、Razor ビューを最大限に活用していますが、最終的には、すべてのデータをクライアント側の ajax 呼び出しに依存し、ほぼすべての動的マークアップを KnockoutJS に依存しています。最終的に、私のクライアント側アプリは、Web フォームと MVC の間でそれほど違いはありません。MVC ベースのコントローラーは、ajax エンドポイントの操作が簡単で、ソリューションがよりクリーンです。

一般に、私は両方のソリューションを「シングル ページ アプリケーション」、別名 SPA アプローチにまとめます。Web フォームで機能する可能性のあるアプローチは他にもありますが、私の限られた調査では、これが最良の選択肢でした。

于 2013-01-16T13:57:22.663 に答える