【发布时间】:2014-10-27 20:53:46
【问题描述】:
这里有一个需要帮助的 C# MVC 初学者。 我被困在将视图模型数据传递给 PagedList。 我究竟做错了什么? 我得到的控制器中的错误消息是:
无法将类型“PagedList.IPagedList”隐式转换为“PagedList.IPagedList”。存在显式转换(您是否缺少演员表?)
我查看了大量关于此主题的其他帖子,但无法解决我的问题。
这是我的视图模型:
public partial class NaloziViewModel
{
public int IDNalozi { get; set; }
public int KlijentID { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy HH:mm}", ApplyFormatInEditMode = true)]
public DateTime VremeStart { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy HH:mm}", ApplyFormatInEditMode = true)]
public DateTime? VremeKraj { get; set; }
public int KilometrazaStart { get; set; }
public int? KilometrazaKraj { get; set; }
public virtual Klijent Klijent { get; set; }
public int? Page { get; set; }
}
分页类
public class Pagedclass
{
public PagedList.IPagedList<NaloziViewModel> mylist { get; set; }
public int KilometrazaSum { get; set; }
public int VremeSum { get; set; }
}
控制器:
public ActionResult Index(int? page, DateTime? dateFrom, DateTime? dateTo, string klijentIme)
{
int pageSize = 10;
int pageNumber = (page ?? 1);
var naloziFilter = db.Nalozis.Include(n => n.Klijent).OrderByDescending(n => n.IDNalozi).Where(n => n.Obrisan == 0).ToPagedList(pageNumber,pageSize);
if (dateFrom != null && dateTo != null )
{
naloziFilter = naloziFilter.Where(n => n.Klijent.NazivKlijenta.Contains(klijentIme)).Where(n => n.VremeStart >= dateFrom).Where(n => n.VremeKraj <= dateTo).ToPagedList(pageNumber,pageSize);
TimeSpan vremeSum = new TimeSpan();
naloziFilter.Where(x => x.VremeKraj.HasValue).ToList().ForEach(x => vremeSum += x.VremeKraj.Value - x.VremeStart);
var model = new Pagedclass
{
mylist = naloziFilter,
KilometrazaSum = naloziFilter.Sum(n => n.KilometrazaKraj ?? 0) - naloziFilter.Sum(n => n.KilometrazaStart),
VremeSum = (vremeSum.Days*24)+vremeSum.Hours,
};
return View(model);
}
else
{
TimeSpan vremeSum = new TimeSpan();
naloziFilter.OrderByDescending(n => n.IDNalozi).Where(n => n.Obrisan == 0).Where(x => x.VremeKraj.HasValue).ToList().ForEach(x => vremeSum += x.VremeKraj.Value - x.VremeStart);
var model = new Pagedclass
{
mylist = naloziFilter,
KilometrazaSum = naloziFilter.Sum(n => n.KilometrazaKraj ?? 0) - naloziFilter.Sum(n => n.KilometrazaStart),
VremeSum = (vremeSum.Days * 24) + vremeSum.Hours
};
return View(model);
}
}
我的观点:
@model Pagedclass
@using PagedList;
@using PagedList.Mvc;
....
【问题讨论】:
-
您从
db.Nalozis的查询返回的集合是Nalozi的集合,而不是NaloziViewModel。您需要将这些项目投影到NaloziViewModel。 -
@Jasen 你能帮我解决这个问题吗?不知道应该怎么做。
-
answer to this question 有一个投影示例。该问题询问AutoMapper,这是一个帮助您进行这些预测的工具,因此您无需重复输入这些内容。
标签: c# asp.net-mvc viewmodel pagedlist