这是一个自定义列表(我为结果分页创建的):
public class PagedList<T> : List<T>
{
public int PageIndex { get; set; }
public bool HasNextPage { get; set; }
// ...
}
我想通过 JSON 将此列表传递到 View :
[HttpPost]
public ActionResult StoreProducts(StoreDetailsViewModel model)
{
PagedList<Product> products = _productRepository.GetAll();
return Json(products);
}
在 View 中,我想访问扩展列表的自定义属性,但它不起作用:
function getStoreProducts() {
var form = $('#form');
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function(result) {
viewModel.products = result; // <-- success
viewModel.hasNextPage = result.HasNextPage; // <-- fail, property is undefined
}
});
}
有人可以告诉我如何解决我的问题吗?
最佳答案
PagedList 应该是它自己的类,其上有一个属性,即 List,这是更简单的路线。否则,您需要为 PagedList 类编写一个自定义转换器,以便不序列化为数组,而是序列化为对象。
public class PagedList<T>
{
public int PageIndex { get; set; }
public bool HasNextPage { get; set; }
public List<T> Items { get; set; }
// ...
}
关于javascript - ASP.NET : Passing custom list properties via JSON to JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349757/