Asp.net mvc 4 传递到字典的模型项的类型为PagedList。PagedList[],但此字典需要类型为的模型项
我试图在项目中使用视图模型,但出现以下错误: 传递到字典中的模型项的类型为 “PagedList.PagedListAsp.net mvc 4 传递到字典的模型项的类型为PagedList。PagedList[],但此字典需要类型为的模型项,asp.net-mvc-4,Asp.net Mvc 4,我试图在项目中使用视图模型,但出现以下错误: 传递到字典中的模型项的类型为 “PagedList.PagedList1[ContosoUniversity.Models.Course]”,但此词典需要类型为“System.Collections.Generic.IEnumerable1[ContosoUniversity.ViewModels.CourseViewModel]”的模型项 控制器: public ActionResult Index(int? page) {
1[ContosoUniversity.Models.Course]”,但此词典需要类型为“System.Collections.Generic.IEnumerable
1[ContosoUniversity.ViewModels.CourseViewModel]”的模型项
控制器:
public ActionResult Index(int? page)
{
int pageNumber = page ?? 1;
var courses = courseService.GetAll();
var coursesViewList = Mapper.Map<IEnumerable<Course>, IEnumerable<CourseViewModel>>(courses);
var model = coursesViewList.ToPagedList(pageNumber, PageSize);
return View(model);
}
public ActionResult索引(int?页)
{
int pageNumber=第1页;
var courses=courseService.GetAll();
var coursesViewList=Mapper.Map(课程);
var模型=coursesViewList.ToPagedList(页码、页面大小);
返回视图(模型);
}
视图:
@model IEnumerable
@使用PagedList.Mvc;
@使用页面列表;
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
@DisplayNameFor(model=>model.Title)
@DisplayNameFor(model=>model.Credits)
学生
@foreach(模型中的var项目){
@DisplayFor(modeleItem=>item.Title)
@DisplayFor(modelItem=>item.Credits)
@string.Join(“,”,item.registrations.Select(e=>e.Student.FullName))
@ActionLink(“编辑”,“编辑”,新的{id=item.CourseID})|
@ActionLink(“删除”,“删除”,新的{id=item.CourseID})
}
@PagedListPager((IPagedList)模型,page=>Url.Action(“Index”,new{page}))
有人能帮我解决一个问题吗?您正在传递类型为
PagedList.PagedList1
的模型,而您的视图是用IEnumerable
强键入的
您需要将IEnumerable
从action或set Model of View传递到PagedList
,或者您可以通过以下方式将其包装到ViewModel中来解决此问题:
public class CoursesVM
{
public PagedList.IPagedList<CourseViewModel> Courses { get; set; }
}
公共课程虚拟机
{
public PagedList.IPagedList课程{get;set;}
}
在行动中:
public ActionResult Index(int? page)
{
int pageNumber = page ?? 1;
var courses = courseService.GetAll();
var coursesViewList = Mapper.Map<IEnumerable<Course>, IEnumerable<CourseViewModel>>(courses);
var model = new CoursesVM();
model.Courses = coursesViewList.ToPagedList(pageNumber, PageSize);
return View(model);
}
public ActionResult索引(int?页)
{
int pageNumber=第1页;
var courses=courseService.GetAll();
var coursesViewList=Mapper.Map(课程);
var model=newcoursesvm();
model.Courses=coursesViewList.ToPagedList(页码、页面大小);
返回视图(模型);
}
鉴于:
@model ContosoUniversity.ViewModels.CoursesVM
@using PagedList.Mvc;
@using PagedList;
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Credits)
</th>
<th>
Students
</th>
<th></th>
</tr>
@foreach (var item in Model.Courses) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Credits)
</td>
<td>
@string.Join(",", item.Enrollments.Select(e => e.Student.FullName))
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.CourseID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.CourseID })
</td>
</tr>
}
</table>
@model ContosoUniversity.ViewModels.CoursesVM
@使用PagedList.Mvc;
@使用页面列表;
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
@DisplayNameFor(model=>model.Title)
@DisplayNameFor(model=>model.Credits)
学生
@foreach(Model.Courses中的var项){
@DisplayFor(modeleItem=>item.Title)
@DisplayFor(modelItem=>item.Credits)
@string.Join(“,”,item.registrations.Select(e=>e.Student.FullName))
@ActionLink(“编辑”,“编辑”,新的{id=item.CourseID})|
@ActionLink(“删除”,“删除”,新的{id=item.CourseID})
}
这个错误是不言自明的,请尝试理解它。在控制器中放置断点并检查各种变量的内容。谢谢,但现在出现不同的错误:CS1579:foreach语句无法对“ContosUniversity.ViewModels.CourseViewModel”类型的变量进行操作,因为“ContosUniversity.ViewModels.CourseViewModel”不包含您正在使用的“getEnumerator”的公共定义迭代错误迭代其属性列表而不是单个对象
@model ContosoUniversity.ViewModels.CoursesVM
@using PagedList.Mvc;
@using PagedList;
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Credits)
</th>
<th>
Students
</th>
<th></th>
</tr>
@foreach (var item in Model.Courses) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Credits)
</td>
<td>
@string.Join(",", item.Enrollments.Select(e => e.Student.FullName))
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.CourseID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.CourseID })
</td>
</tr>
}
</table>