我想在我的ASP.NET MVC项目中实现分页。当我将@model PagedList.IPagedList<TestProject.Models.Test>
放入Index
页面时,会出现以下错误。
编译器错误消息:CS1061:&#39; IPagedList&#39;不包含&#39; FName&#39;的定义没有扩展方法&#39; FName&#39;接受类型&#39; IPagedList&#39;的第一个参数。可以找到
当我放@model IEnumerable<TestProject.Models.Test>
时,它会出现以下错误:
参数2:无法转换为System.Collections.Generic.IEnumerable&lt; TestProject.Models.Test&gt;&#39;到&#39; PagedList.IPagedList&#39;
@Html.PagedListPager(Model, pageNumber => Url.Action("Index", new { pageNumber })
我的Home Controller
会返回以下内容:
public ActionResult Index(int? pageNumber)
{
TestHandle testHandle = new TestHandle();
ModelState.Clear();
return View(testHandle.GetAll().ToList().ToPagedList(pageNumber ?? 1, 3));
}
我的GetAll
函数重新生成列表:
public List<Test> GetAll()
{
clsUtilities cUtils = new clsUtilities();
DataSet ds;
List<Test> studentlist = new List<Test>();
string sSQL;
sSQL = "exec AllPhone";
ds=cUtils.GetDataSet(sSQL);
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
studentlist.Add(
new Test
{
Id = Convert.ToInt32(dr["Id"]),
FName = Convert.ToString(dr["FName"]),
LName = Convert.ToString(dr["LName"]),
Address = Convert.ToString(dr["Address"])
});
}
return studentlist;
}
请指导我。我做了很多研究,但没有运气。所以我发布了这个错误。请建议我哪里出错了。任何帮助都非常感谢。
答案 0 :(得分:1)
DisplayNameFor()
仅在将IEnumerable<T>
用于集合属性时才接受IPagedList<T>
。如果您的模型是@Html.DisplayNameFor(m => m.FirstOrDefault().FName)
,那么您可以使用
ModelState.Clear();
请注意,即使集合为空,这也会有效。
作为旁注,在您的GET方法中调用prepare(for:sender:)
毫无意义,可以删除。