views:

42

answers:

1

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:

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

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>

<% if (Model.HasPreviousPage) { %>

<%= Html.RouteLink("<<<", "UpcomingDinners", new { page = (Model.PageIndex-1) }) %>

<% } %>

<% if (Model.HasNextPage) { %>

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

<% } %>

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

+2  A: 

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

Raj Kaimal
ok thanks a million,problem solved
mazhar kaunain baig