想在我的ASP.NET MVC TestProject应用程序

时间:2017-11-12 21:30:57

标签: asp.net-mvc pagination

我想在我的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;
}

请指导我。我做了很多研究,但没有运气。所以我发布了这个错误。请建议我哪里出错了。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

DisplayNameFor()仅在将IEnumerable<T>用于集合属性时才接受IPagedList<T>。如果您的模型是@Html.DisplayNameFor(m => m.FirstOrDefault().FName) ,那么您可以使用

ModelState.Clear();

请注意,即使集合为空,这也会有效。

作为旁注,在您的GET方法中调用prepare(for:sender:)毫无意义,可以删除。