Loverly error:
model item passed into the ViewDataDictionary is of type 'System.Collections.Generic.List`1[EVA.Models.Job]', but this ViewDataDictionary instance requires a model item of type 'Eva.PaginatedList`1[EVA.Models.Job]'.
Cant see why...Probably blind again.
Controller:
- public async Task
Index( - string sortOrder,
- string currentFilter,
- string searchString,
- int? page)
- {
- ViewData["CurrentSort"] = sortOrder;
- ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
- ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
- if (searchString != null)
- {
- page = 1;
- }
- else
- {
- searchString = currentFilter;
- }
- ViewData["CurrentFilter"] = searchString;
- var jobs = from j in _context.Job
- .Include(j => j.Site)
- .Include(j => j.WaterBody)
- select j;
- if (!String.IsNullOrEmpty(searchString))
- {
- jobs = jobs.Where(s => s.Site.SiteName.Contains(searchString)
- || s.JobNumber.Contains(searchString));
- }
- switch (sortOrder)
- {
- case "name_desc":
- jobs = jobs.OrderByDescending(j => j.Site.SiteName);
- break;
- case "Date":
- jobs = jobs.OrderBy(j => j.BookingDate);
- break;
- case "date_desc":
- jobs = jobs.OrderByDescending(j => j.BookingDate);
- break;
- default:
- jobs = jobs.OrderBy(j => j.Site.SiteName);
- break;
- }
- int pageSize = 9;
- return View(await PaginatedList
.CreateAsync(jobs.AsNoTracking(),page??1,pageSize )); - }
- @model PaginatedList
- @{
- ViewData["Title"] = "Jobs List";
- }
Jobs List
- "Create">Create New
- method="get">
- class="form-actions no-color">
- Find by Site Name or by Job Number: "text" name="SearchString" value="@ViewData["currentFilter"]" />
- "submit" value="Search" class="btn btn-default" /> |
- "Index">Back to Full List
class="table">
- "Index" asp-route-sortOrder="@ViewData["DateSortParm"]">Booking Date
- Job Number
- "Index" asp-route-sortOrder="@ViewData["NameSortParm"]">Site
- Waterbody
- Job Description
- @foreach (var item in Model) {
- @Html.DisplayFor(modelItem => item.BookingDate)
- @Html.DisplayFor(modelItem => item.JobNumber)
- @Html.DisplayFor(modelItem => item.Site.SiteName)
- @Html.DisplayFor(modelItem => item.WaterBody.WBName)
- @Html.DisplayFor(modelItem => item.JobDescription)
- "Edit" asp-route-id="@item.JobID">Edit |
- "Details" asp-route-id="@item.JobID">Details |
- "Delete" asp-route-id="@item.JobID">Delete
- }
- @{
- var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
- var nextDisabled = !Model.HasNextPage ? "disabled" : "";
- }
- "Index"
- asp-route-sortOrder="@ViewData["CurrentSort"]"
- asp-route-page="@(Model.PageIndex - 1)"
- asp-route-currentFilter="@ViewData["CurrentFilter"]"
- class="btn btn-default @prevDisabled btn">
- Previous
- "Index"
- asp-route-sortOrder="@ViewData["CurrentSort"]"
- asp-route-page="@(Model.PageIndex + 1)"
- asp-route-currentFilter="@ViewData["CurrentFilter"]"
- class="btn btn-default @nextDisabled btn">
- Next
Replies
Know the answer? Post it — somebody with the same question will find it here.