Asp.net-mvc – The model item passed into the dictionary is of type ‘System.Collections.Generic.Lis

asp.netasp.net-mvclinqlinq-to-entities

Calling Index view is giving me this very very annoying error . Can anybody tell me what to do about it

Error:
The model item passed into the dictionary is of type 'System.Collections.Generic.List1[MvcApplication13.Models.Groups]', but this dictionary requires a model item of type 'MvcApplication13.Helpers.PaginatedList1[MvcApplication13.Models.Groups]'.

public ActionResult Index(int? page)
{
const int pageSize = 10;
var group =from p in _db.Groups orderby p.int_GroupId select p;

      var paginatedGroup = group.Skip((page ?? 0) * pageSize).Take(pageSize).ToList();
      return View(paginatedGroup);            
    }

View:

>" %>

Index

<h2>Index</h2>

<table>
    <tr>
        <th></th>
        <th>
            int_GroupId
        </th>
        <th>
            vcr_GroupName
        </th>
        <th>
            txt_GroupDescription
        </th>
        <th>
            bit_Is_Deletable
        </th>
        <th>
            bit_Active
        </th>
        <th>
            int_CreatedBy
        </th>
        <th>
            dtm_CreatedDate
        </th>
        <th>
            int_ModifiedBy
        </th>
        <th>
            dtm_ModifiedDate
        </th>
    </tr>

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.ActionLink("Edit", "Edit", new { id=item.int_GroupId }) %> |
            <%= Html.ActionLink("Details", "Details", new { id=item.int_GroupId })%> |
            <%= Html.ActionLink("Delete", "Delete", new { id=item.int_GroupId })%>
        </td>
        <td>
            <%= Html.Encode(item.int_GroupId) %>
        </td>
        <td>
            <%= Html.Encode(item.vcr_GroupName) %>
        </td>
        <td>
            <%= Html.Encode(item.txt_GroupDescription) %>
        </td>
        <td>
            <%= Html.Encode(item.bit_Is_Deletable) %>
        </td>
        <td>
            <%= Html.Encode(item.bit_Active) %>
        </td>
        <td>
            <%= Html.Encode(item.int_CreatedBy) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.dtm_CreatedDate)) %>
        </td>
        <td>
            <%= Html.Encode(item.int_ModifiedBy) %>
        </td>
        <td>
            <%= Html.Encode(String.Format("{0:g}", item.dtm_ModifiedDate)) %>
        </td>
    </tr>

<% } %>

</table>

>>", "UpcomingDinners", new { page = (Model.PageIndex + 1) }) %>

<p>
    <%= Html.ActionLink("Create New", "Create") %>
</p>

Best Answer

You lost some data when you pasted your code. This is what I think you meant to paste: View

<%@ Page Title="" Language="C#" 
  MasterPageFile="~/Views/Shared/Site.Master" 
 Inherits="System.Web.Mvc.ViewPage<MvcApplication13.Helpers.PaginatedList<MvcApplication13.Models.Groups>>" %>

If so , you code should look similar to this (ie. create a new instance of the PaginatedList class):

public ActionResult Index(int? page) {

    const int pageSize = 10;

    var upcomingDinners = dinnerRepository.FindUpcomingDinners();
    var paginatedDinners = new PaginatedList<Dinner>(upcomingDinners, page ?? 0, pageSize);

    return View(paginatedDinners);
}

http://nerddinnerbook.s3.amazonaws.com/Part8.htm

Related Topic