在通過AJAX動態加載網格/列表的頁面中,填充該列表的有效方法是調用控制器操作以返回一個JSON結果。使用ASP.net MVC和jQuery來使用JSON填充AJAX列表而不是完整的部分頁面HTML
使用ASP.net MVC,你可以調用一個控制器動作返回一個局部頁面,但這看起來並不高效,因爲它返回了HTML塊。使用JSON會導致返回更緊湊的數據。使用JSON結果和jQuery來呈現頁面的最佳方式是什麼,使用某種循環來解析和格式化結果?我在網上找到的大多數例子都只是建議返回一個部分列表,這可能適合用於微不足道的用途,但我見過的所有大型網站都使用純JSON來填充他們的AJAX列表。
部分HTML結果(似乎低效返回這麼大的結果):
<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"}]
儘管如此,目前我有:
public PartialViewResult CategoryListPartial(string category)
{
var filteredCategories = DB.Categories.OrderBy(c => c.Name)
.Where(c => c.Category.Name == category);
return PartialView("CategoryListPartial", filteredCategories);
}
而下面的客戶端的jQuery的加載圖像
$.get('@Url.Action("CategoryListPartial","Categories", new {category="Toys"})',
function (data) {
$('.ajaxResponse').empty().html('<img src="/contents/images/loader.gif"');
$('.ajaxResponse').replaceWith(data);
});
加載列表我以爲這將是更好的有:
[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 2012-03-06 01:21:21