0

個人的には、すべてのコントロール バインドをサーバー上で行うのが好きです (たとえば、ドロップダウンの入力/バインド、テキスト ボックスへの入力など)。ページが読み込まれると、ページ上のすべてのコントロールをバインドする BindControls() を呼び出します。ユーザーが UpdatePanel 内のドロップダウン オプションを変更すると、ポストバックでサーバーにヒットし、BindControls() を再度呼び出します。

問題は、UpdatePanels が、UpdatePanel 内のコントロールのビューステートだけではなく、ページのビューステート全体をやり取りしているように見えることです。これがなぜなのかはわかりませんが、速度に関する限り、かなり大きなパフォーマンス ヒットです。

以前、サーバーに渡すコントロールのビューステートを指定できる Telerik の RadAjaxManager を使用しました。クライアント側のコードを必要とせず、ビューステートの転送を小さく保ちながら、すべてのバインディング ロジックをサーバーに統合できるため、これは完璧でした。

誤解しないでほしいのですが、私は AJAX、Json、および JavaScript が大好きですが、それらを使用してバインド操作を実行するのは好きではありません。そうは言っても、特定のコントロールのビューステートのみを転送するように UpdatePanel を構成する方法を見つけるか、サーバー上のコントロールをバインドして更新された HTML をサーバーに配信できる代替コントロールを見つける方法を見つけたいと思います。クライアント。

4

2 に答える 2

0

残念ながら、ASP.net を扱う場合、サーバーとの間で ViewState がどのようにピンポンされるかを明確に制御するのは困難です。ページのライフサイクルの大部分は ViewState を中心に構築されており、プラットフォーム全体の中心となっています。

ワルサーが言ったように、最良の代替手段は、jQuery と Web サービスの組み合わせを使用して、サイトで AJAX 機能を処理することです。機能を Page メソッドとして実装することはおそらく避けたいと思います。なぜなら、それらを呼び出すには、毎回ライフサイクル全体を通してページを配置する必要があるからです。また、 Knockout.jsjQuery テンプレートの使用を検討して 、クライアント側要素へのデータ バインディングを支援することもお勧めします。これらのテクノロジを適切に組み合わせると、従来の ASP.net AJAX コントロールを使用するよりも優れたパフォーマンスと低いメンテナンス オーバーヘッドで、より豊富なクライアント側機能を作成できます。

これらのよりオープンな標準を採用するもう 1 つの利点は、他の Web プラットフォームに簡単に変換できることです。jQuery を使用して AJAX を処理するということは、クライアント側の機能を作成するために使用する多くの手法が、PHP や MVC を実行するサイト用に開発する必要があったとしても、多かれ少なかれ同じであることを意味します。重量級の WebForms プラットフォームの)

于 2012-08-02T16:37:43.900 に答える
0

管理する必要がある場合は、代わりに jquery + ページ メソッドまたは Web サービスを使用することをお勧めします。過去に UpdatePanels などのさまざまなコントロールを使用してきましたが、このような理由で削除しました。必要な動作とパフォーマンスを達成するために、updatepanels などのトリックを学ぶよりも、jquery を使用する方がはるかに簡単です。どんなに技術を熟知していても、抽象化のすべてのレイヤーがオーバーヘッドを追加します。

于 2012-08-02T16:27:16.517 に答える