传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []',但此字典需要[duplicate]类型的模型项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []',但此字典需要[duplicate]类型的模型项相关的知识,希望对你有一定的参考价值。

我试图使用索引视图强类型为@model IEnumerable的集合,并使用Model.Name(在html帮助方法中的model => model.OrganisationName)。两者都符合我的要求。

@*@model IEnumerable<LMTLibrary.LMTUsage>*@
@model LMTLibrary.LMTUsage

<td width="25%">
                            @Html.LabelFor(m => m.Organisation, new { @class = "control-label col-md-2" })
                        </td>
                        <td width="25%">
                            @if (ViewBag.UserRoleId == 1)
                            {
                                @Html.DropDownListFor(m => m.Organisation, new SelectList(Model.LMTOrganisationList, "Organisation", "Organisation"), "All",
                                                                 new { @class = "form-control", @onchange = "javascript:GetBusinessArea(this.value);" })

                            }
                            else
                            {
                                @Html.DropDownListFor(m => m.Organisation, new SelectList(Model.LMTOrganisationList, "Organisation", "Organisation"),
                                                                 new { @class = "form-control", @onchange = "javascript:GetBusinessArea(this.value);" })

                            }
                            @Html.ValidationMessageFor(m => m.Organisation, "", new { @class = "text-danger" })
                        </td>

  @foreach (var item in (IList<LMTLibrary.LMTUsage>)ViewData.Model)
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.UserId)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.UserName)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Organisation)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.BusinessArea)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Company)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.RoleName)
                            </td>
                            <td>
                                @Html.ActionLink("Edit", "Edit")
                            </td>
                        </tr>
                    }

下面是我的控制器代码

 public ActionResult Index()
    {
        var LMTAccessRoles = AppSettings.Get<string>("Authorization.LMTAccess");
        var LMTAdminRoles = AppSettings.Get<string>("Authorization.LMTAdmin");

        ViewBag.LMTAccessRoles = LMTAccessRoles;
        ViewBag.LMTAdminRoles = LMTAdminRoles;

        if (!AuthorizationLevel.GetSecurityLevels(User).Contains("LMTAdmin"))
            return RedirectToAction("Unauthorized");

        LMTUsage objLMT = new LMTUsage();
        LMTDAL objLMTDAL = new LMTDAL();

        List<LMTUsage> _OLLMTUsage = new List<LMTUsage>();



        _OLLMTUsage = objLMTDAL.UserRoleCompany_GetAll();

        return View(_OLLMTUsage.ToList());
    }

这给了我错误。请帮我解决这个问题。

答案

您的视图实际上与@model LMTLibrary.LMTUsage绑定,而不是与@*@model IEnumerable<LMTLibrary.LMTUsage>*@绑定,因为它是一个评论。事实上,您无法将控制器绑定到多个模型。

然后从控制器,该方法返回List<LMTUsage>,这是不期望的。根据您的需要,更改控制器以返回单个对象或更改视图中的绑定。

如果您的需求是需要将视图与多个模型绑定,那么作为一个好的实践使用我们称之为ViewModels的东西,这些只不过是多个模型的包装器。

以上是关于传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []',但此字典需要[duplicate]类型的模型项的主要内容,如果未能解决你的问题,请参考以下文章

错误:传入字典的模型项的类型为“....List”,但此字典需要“...IEnumerable”类型的模型

传递到 ViewDataDictionary 的模型项的类型为“Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable”

在 ASP.NET MVC 中,使用正确的类型化对象呈现用户控件时遇到类型错误

MVC4不正确的模型错误

字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [ShimbaSchool.Models.EventMessageDepartment]&

具有键“CategoryId”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable<SelectListItem>”类型?