我是asp .net mvc的新手,我正在尝试使用viewmodel和join实现IPagedList分页功能。分页和搜索对于普通页面工作正常,但我无法使用viewmodel和join。
这是我的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);
}
请建议
答案 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);