gpt4 book ai didi

c# - 无法添加到 IPagedList 对象或将 List 传输到 IPagedList

转载 作者:行者123 更新时间:2023-12-02 04:48:53 25 4
gpt4 key购买 nike

我正在使用 Page List ASP MVC 插件将分页添加到我的 View ,因为我的 View 模型包含一个有时会有点失控的列表。但是,我遇到了一些问题。

  • View 模型包含一个 List<T>另一个模型对象。如果我对数据库进行一次查询,我可以将此列表的数据类型从 List<ZipCodeTerritory> 更改为至 IPagedList<ZipCodeTerritory> ,然后只需按照文档从查询中加载列表,如下所示:

查看模型

public IPagedList<ZipCodeTerritory> zipCodeTerritory { get; set; }

Controller

search.zipCodeTerritory = (from z in db.ZipCodeTerritory
where z.StateCode.Equals(search.searchState) &&
z.EffectiveDate >= effectiveDate
select z).ToList().ToPagedList(pageNumber, pageSize);

//This works but this only covers one of the three different searches that are
//possibly from this Index page
  • 但是,这会带来一些问题。首先,我无法使用 .clear方法a C# List使用。其次,更重要的是,如果我需要执行不同的搜索,我会多次访问数据库并将每个查询的结果添加到 zipCodeTerritory 中。列表,我无法调用 .addRange()方法。有谁知道如何将项目添加到 IPagedList

查看模型

public IPagedList<ZipCodeTerritory> zipCodeTerritory { get; set; }

Controller

foreach (var zip in zipArray)
{
var item = from z in db.ZipCodeTerritory
where z.ZipCode.Equals(zip) &&
z.EffectiveDate >= effectiveDate &&
z.IndDistrnId.Equals(search.searchTerritory) &&
z.StateCode.Equals(search.searchState)
select z;
search.zipCodeTerritory.AddRange(item); //This line throws the following exception:

//PagedList.IPagedList<Monet.Models.ZipCodeTerritory>' does not contain a
//definition for 'AddRange' and no extension method 'AddRange' accepting a first
//argument of type 'PagedList.IPagedList<Monet.Models.ZipCodeTerritory>' could be
//found (are you missing a using directive or an assembly reference?)
}
  • 我还尝试过在添加分页之前简单地保留代码,然后尝试转换 List<T>进入 IPagedList<T>对象,但是这也不起作用。这种方法可以解决我上面所有的问题,所以如果有人知道如何简单地转换 ListIPagedList那将不胜感激。

查看模型

    public IPagedList<ZipCodeTerritory> pagedTerritoryList { get; set; }
public List<ZipCodeTerritory> zipCodeTerritory { get; set; }

Controller

search.pagedTerritoryList = (IPagedList<ZipCodeTerritory>)search.zipCodeTerritory;

//This threw the following exception at runtime:
//Unable to cast object of type
//System.Collections.Generic.List'1[Monet.Models.ZipCodeTerritory]' to type
//'PagedList.IPagedList'1[Monet.Models.ZipCodeTerritory]'.

最佳答案

要将各种方法结合在一起,您可能应该这样做(基于您的第一个示例):

var mySearch = (from z in db.ZipCodeTerritory
where z.StateCode.Equals(search.searchState) &&
z.EffectiveDate >= effectiveDate
select z);

// Other searches, whatever; use mySearch.AddRange() here

search.zipCodeTerritory = mySearch.ToPagedList(pageNumber, pageSize);

关于c# - 无法添加到 IPagedList 对象或将 List<T> 传输到 IPagedList<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com