我是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-框架在asp-net-mvc应用程序中
这是我的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);
}
请建议
得到了我的答案:
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));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句