ASP.. NET:通过JSON将自定义列表属性传递给JavaScript

ASP.NET: Passing custom list properties via JSON to JavaScript

本文关键字:属性 JavaScript 列表 自定义 NET 通过 JSON ASP      更新时间:2023-09-26

这是一个自定义列表(我创建的分页结果):

public class PagedList<T> : List<T>
{
    public int PageIndex { get; set; }
    public bool HasNextPage { get; set; }
    // ...
}

这个列表我想通过JSON传递给视图:

[HttpPost]
public ActionResult StoreProducts(StoreDetailsViewModel model)
{
    PagedList<Product> products = _productRepository.GetAll();
    return Json(products);
}

在视图中,我想访问扩展列表的自定义属性,但它不起作用:

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; }
    // ...
}