MVC error: model element of type 'System.Collections.Generic.IEnumerable`1 required

I am making some changes to the system and I came across the exception that I was hoping someone could help with this? The error I am getting is the following:

Exception Details: System.InvalidOperationException: The model element passed to the dictionary is of type 'System.Collections.Generic.List 1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [MyApp.Data.aspnet_Users] '.

Basically, what I want to do is display a list of inactive users. Here is the controller I wrote for this:

 public ActionResult InactiveUsers() { using (ModelContainer ctn = new ModelContainer()) { aspnet_Users users = new aspnet_Users(); DateTime duration = DateTime.Now.AddDays(-3); var inactive = from usrs in ctn.aspnet_Users where usrs.LastActivityDate <= duration orderby usrs.LastActivityDate ascending select usrs.UserName; return View(inactive.ToList()); } } 

From here I added a partial view. Here is the code for it if anyone is interested. Just plain Add View -> List.

 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Data.aspnet_Users>>" %> <table> <tr> <th></th> <th> ApplicationId </th> <th> UserId </th> <th> UserName </th> <th> LoweredUserName </th> <th> MobileAlias </th> <th> IsAnonymous </th> <th> LastActivityDate </th> </tr> <% foreach (var item in Model) { %> <tr> <td> <%: Html.ActionLink("Edit", "Edit", new { id=item.UserId }) %> | <%: Html.ActionLink("Details", "Details", new { id=item.UserId })%> | <%: Html.ActionLink("Delete", "Delete", new { id=item.UserId })%> </td> <td> <%: item.ApplicationId %> </td> <td> <%: item.UserId %> </td> <td> <%: item.UserName %> </td> <td> <%: item.LoweredUserName %> </td> <td> <%: item.MobileAlias %> </td> <td> <%: item.IsAnonymous %> </td> <td> <%: String.Format("{0:g}", item.LastActivityDate) %> </td> </tr> <% } %> </table> <p> <%: Html.ActionLink("Create New", "Create") %> </p> 

And for completeness, the Index page is indicated here, where I do a partial:

 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Administrator.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Index </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Index</h2> <% Html.RenderAction("InactiveUsers"); %> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="Header" runat="server"> </asp:Content> 

If anyone has any advice, I would be very grateful :)

+4
source share
1 answer

Hi, I think this is because in your partial view, the view is System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Data.aspnet_Users>> but you select usernames

 select usrs.UserName; return View(inactive.ToList()); 

Try changing it to select usrs; but not usrs.UserName

+3
source

All Articles