AJAXを介してグリッド/リストを動的にロードするページで、そのリストを作成する効率的な方法は、 toはJSON結果を返します。ASP.net MVCとjqueryを使用して、部分ページ全体の代わりにJSONを使用してAJAXリストを生成するHTML
ASP.net MVCを使用すると、はが部分ページを返すコントローラアクションを呼び出すことができますが、HTMLのチャンクを返すので効率的ではありません。 JSONを使用すると、はるかにコンパクトなデータが返されます。 JSON結果とjqueryを使用してページをレンダリングし、結果を解析してフォーマットするために何らかのループを使用してページをレンダリングする最良の方法は何ですか?私がオンラインで見つけた例のほとんどは、単純な使い方に適した部分リストを返すよう提案していますが、私が見たすべての大きなサイトでは純粋なJSONを使ってAJAXリストを作成しています。
<div>
<img src="myimage.jpg">
Category Description
</div>
<div>
<img src="myimage2.jpg">
Category Description 2
</div>
etc...
JSON結果:言っ
[{"image" : "myimage.jpg", "category" : "Category Description"}]
、現在私が持っている:
を部分的なHTMLの結果は、(このような大規模な結果を返すために非効率です)
public PartialViewResult CategoryListPartial(string category) { var filteredCategories = DB.Categories.OrderBy(c => c.Name) .Where(c => c.Category.Name == category); return PartialView("CategoryListPartial", filteredCategories); }
私はそれを持っている方が良いだろうと仮定し と読み込み画像
$.get('@Url.Action("CategoryListPartial","Categories", new {category="Toys"})',
function (data) {
$('.ajaxResponse').empty().html('<img src="/contents/images/loader.gif"');
$('.ajaxResponse').replaceWith(data);
});
でリストをロードするには、次のクライアント側のjQuery:
[HttpPost]
public PartialViewResult CategoryListPartial(string category)
{
var filteredCategories = DB.Categories.OrderBy(c => c.Name).
Where(c => c.Category.Name == category);
return Json(results);
}
一致するクライアント側の反復処理ではとフォーマットJSONの結果:
$.get('@Url.Action("CategoryListPartial","Categories", new { category = "Toys" })', function (data) {
// <pseudocode begin>
for each item in data
render <div><table><tr>...
category.Image = item.Image
category.Name = item.Name
end render
// <pseudocode end>
});
標準的な方法はありますか?
感謝を答える@JayC。非常に多くのテンプレートフレームワークが構築されているので、クライアントサイドリストレンダリングを実装するのが良いスタートだと思われます。 – Ruz