IPagedList // IEnumerable麻烦

时间:2016-07-21 11:29:34

标签: c# asp.net asp.net-mvc-5

我的asp.net proyect遇到了麻烦。我想分页我的桌子,但我无法启动我的网站。

这就是问题所在:

  • 我使用getter和setter将实体模型创建到'Context'文件夹中 我的桌子
  • 然后我使用vs
  • 生成控制器
  • 我用这段代码修改控制器

        public ActionResult Index(int? page)
        {
    
        var firmas = from f in db.Firmas select f;
        if (Request.HttpMethod != "GET")
        {
            page = 1;
        }
        int pageSize = 2;
        int pageNumber = (page ?? 1);
    
        return View(firmas.ToPagedList(pageSize, pageNumber));
        }
    

我把它变成了cshtml索引

@*@model IEnumerable<actiTest2.Context.Firmas>*@

@model PagedList.IPagedList<actiTest2.Controllers.FirmasController>

@using PagedList;
@using PagedList.Mvc;

这就是重点,如果我调用模型IEnumerable,程序崩溃原因需要IPagedList,但如果我调用IPagedList程序说'FirmasController'不包含我的模型显示的定义。

我该怎么办?使用get / set errs合并控制器和自动生成的代码?

提前致谢

编辑:在应用'smoksnes'解决方案后,我遇到了一个新问题:

http://i.imgur.com/DbtIvMf.png

1 个答案:

答案 0 :(得分:0)

将视图中的模型更改为(第一行):

@model PagedList.IPagedList<actiTest2.Context.Firmas>

当您使用@model PagedList.IPagedList<actiTest2.Controllers.FirmasController>时,您试图将控制器用作模型。

所以你的观点应该是这样的:

@using PagedList
@using PagedList.Mvc
@model PagedList.IPagedList<actiTest2.Context.Firmas>

<p> Content here </p>

在你的控制器中:

public ActionResult Index(int? page)
{
    // Order the collection before skipping.
    var firmas = db.Firmas.OrderBy(x => x.Name); // Or some property.
    if (Request.HttpMethod != "GET")
    {
        page = 1;
    }
    int pageSize = 2;
    int pageNumber = (page ?? 1);

    return View(firmas.ToPagedList(pageSize, pageNumber));
}

有关此处错误的更多信息:

The method 'OrderBy' must be called before the method 'Skip' Exception

  

该异常意味着如果您申请,您始终需要一个已排序的输入   跳过,同样在用户没有单击要排序的列的情况下   由

特别针对ToPagedList()