C# 传递到字典中的模型项的类型为X,但此字典需要类型为X的模型项

C# 传递到字典中的模型项的类型为X,但此字典需要类型为X的模型项,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在尝试创建一个视图模型。对于我的应用程序,我想显示一个客户列表,其中他们的帐户上存在错误。错误由另一个程序存储在数据库中 最终目的是定期向客户发送一条信息,告知其帐户中的项目有错误(我们处理的是车辆,因此车牌检查可能会出现问题,需要客户采取行动) 我创建了一个名为CustomerAlerts.cs的ViewModel using MyProjectName.Models; namespace MyProjectName.ViewModels { public class Custo

我正在尝试创建一个
视图模型
。对于我的应用程序,我想显示一个客户列表,其中他们的帐户上存在错误。错误由另一个程序存储在数据库中

最终目的是定期向客户发送一条信息,告知其帐户中的项目有错误(我们处理的是车辆,因此车牌检查可能会出现问题,需要客户采取行动)

我创建了一个名为CustomerAlerts.cs的
ViewModel

using MyProjectName.Models;

namespace MyProjectName.ViewModels
{
    public class CustomerAlerts
    {
        public IEnumerable<string> companynames { get; set; }
    }
}
在我看来,最重要的是

@model IEnumerable<MyProjectName.ViewModels.CustomerAlerts>

但这会导致“不包含可计算的定义”错误。

您正在向视图传递一个
CustomerAlerts
实例,但视图的模型类型是
CustomerAlerts
的集合

传递一组
自定义项
,或将视图模型类型更改为:

@model MyProjectName.ViewModels.CustomerAlerts
@model MyProjectName.ViewModels.CustomerAlerts

这是因为您从
Index
方法返回
Customerlerts
的单个实例,并且您的视图需要它的列表。

根据上面的@devdigital,对我有效的答案是将视图模型类型更改为:

@model MyProjectName.ViewModels.CustomerAlerts
@model MyProjectName.ViewModels.CustomerAlerts
我以前确实尝试过这个,但是视图中缺少了导致异常的其他内容。foreach语句需要对此进行一些调整:

@foreach (var companyname in Model.companynames)
{
    <tr>
        <td>@companyname</td>
        <td>@companyname.Count()</td>
    </tr>
}
@foreach(Model.companynames中的var companyname)
{
@公司名称
@companyname.Count()
}

现在,这显示了一个携带错误的公司列表,以及他们的库存中有多少车辆处于错误状态。

我已经修复了它,但是。对不起。下次注意。谢谢-这正是我需要的线索。谢谢-这正是我需要的线索。更改视图模型类型是我的答案,同时在foreach语句中更改了代码。
@foreach (var companyname in Model.companynames)
{
    <tr>
        <td>@companyname</td>
        <td>@companyname.Count()</td>
    </tr>
}