如何在viewmodel中使用IPagedList分页功能并加入asp .net mvc

时间:2016-06-23 09:55:53

标签: asp.net-mvc

我是asp .net mvc的新手,我正在尝试使用viewmodel和join实现IPagedList分页功能。分页和搜索对于普通页面工作正常,但我无法使用viewmodel和join。

我正在遵循这种方法:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

这是我的ViewModel类:

 public class SponserDisplayViewModel
    {
        public Sponser Sponser { get; set; }
        public SponserDetail SponserDetail { get; set; }
        public SponserType SponserType { get; set; }
    } //--- Here All three are different classes.

这里我在Controller中尝试了什么:

public ActionResult Index(string searchString, int? page, string btnSearch)
        {
            var viewModel = from s in db.Sponsers
                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                            from st in st2.DefaultIfEmpty()
                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };

            if (btnSearch == "Reset")
            { searchString = string.Empty; }
            if (!String.IsNullOrEmpty(searchString))
            {
                viewModel = from s in db.Sponsers
                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                            from st in st2.DefaultIfEmpty()
                            where st.Name.Contains(searchString)
                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };
            }
            int pageSize = 20;
            int pageIndex = 1;
            pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;


//==================Getting error here
            IPagedList<SponserDisplayViewModel> po = from s in db.Sponsers
                                            join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
                                            from st in st2.DefaultIfEmpty().OrderBy(a => a.DisplayOrder).ToPagedList(pageIndex, pageSize)
                                            select new SponserDisplayViewModel { Sponser = s, SponserType = st };

            return View(po);
        }

请建议

2 个答案:

答案 0 :(得分:0)

得到了我的答案:

var po = from s in db.Sponsers
         join st in db.SponserTypes on s.SponserTypeId equals st.Id into st2
         from st in st2.DefaultIfEmpty
         orderby st.DisplayOrder
         select new SponserDisplayViewModel { Sponser = s, SponserType = st };
return View(po.ToPagedList(pageIndex, pageSize));

答案 1 :(得分:0)

它为我工作

int pagesize = 7, pageindex = 1;
        pageindex = page.HasValue ? Convert.ToInt32(page) : 1;
        var list = db.tbl_Category.Where(x => x.C_Status == 1).ToList();
        IPagedList<tbl_Category> showlis = list.ToPagedList(pageindex, pagesize);