正直なところ、このためのWebフォームモデル全体(を含むUpdatePanel
)は避けたいと思います。この場合、多くのオーバーヘッドと複雑さが追加されます。
AJAXリクエストをハンドラー(それが何であれ、この目的のために構築されたASPXページ、Webメソッド、HttpHandler、MVCコントローラーなど)に送り返し、JSONを返します。コメントは構造的にかなり単純なので、必要に応じて関連するマークアップを挿入/構築するのは難しくありません。
このアプローチを使用して、ASP.Net Webフォームアプリに無限のコメントシステムを構築しましたが、これはうまく機能します。ページは、ユーザーコントロールを備えた通常のASPXとしてレンダリングされます。コメントのユーザーコントロールは、ほんの少しのスクリプトを出力します。
コントローラーへのリクエストを使用して最初のコメントを読み込み、ユーザーがスクロールすると、コントローラーがセットの最後に到達したことを通知するまで、コントローラーに次のデータブロックを要求するだけです(キャップを追加することもできます)。ユーザーがあまりにも多くのレコードをロードしてブラウザをクラッシュさせないこと)。
例
- jQuery.ajax()を使用してリクエストを行う
- 成功コールバックでは、渡されたデータをJavaScriptオブジェクトとして扱うことができます
- すべてのアイテムをループして、DOMノードを作成/追加します。
var element = $("#comments"); // this is your node with all comments
$.ajax({
type: "POST",
url: "ClientApi/Comments/_GetPaged", // this handler builds JSON
dataType: "json",
data: { pageIndex: 5 }, // your input values here
cache: false,
success: function (data) {
for (var i = 0; i < data.length; i++) {
var comment = data[i];
var itemElement = $("<div/>").appendTo(element);
// do whatever you want here, just remember that user input
// should be sanitized somewhere during the process
itemElement.html(comment.text);
}
}
});