ASP.NET MVC 5 传递到字典中的模型项是 'Name.Models.IndexViewModel' 类型的,但是这个字典需要一个模型项类型

ASP.NET MVC 5 The model item passed into the dictionary is of type 'Name.Models.IndexViewModel', but this dictionary requires a model item of type

在执行当前网络请求时产生了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。

堆栈跟踪:

InvalidOperationException: The model item passed into the dictionary is of type 'Name.Models.IndexViewModel', but this dictionary requires a model item of type 'Name.Models.TwoViewModel'.

这个视图我需要两个不同的视图模型:

public class TwoViewModel
{
    public IEnumerable<Name.Models.Project> Model1 { get; set; }
    public IndexViewModel Model2 { get; set; }
}

编辑:

我想我已经找到问题出在哪里,ManageController:

public async Task<ActionResult> Index(ManageMessageId? message)
{
    var userId = User.Identity.GetUserId();
    var userEmail = User.Identity.Name;
    var user = UserManager.FindById(userId);
    var model = new IndexViewModel
    {              
        Email = user.Email,
        FirstName = user.FirstName,
        LastName = user.LastName,
        City = user.City,            
    };    
    return View(model);
}

我尝试过更改模型的 ViewModel,尝试

var model = new TwoViewModel
{
    Model2.Email = user.Email,
    Model2.FirstName = uesr.FirstName,
    Model2.LastName = user.LastName,
    Model2.City = user.City,                       
};             
return View(model);

并且 intellisense 确实识别 Model2 但不识别 .Email 部分。我认为嵌套会是这样吗?

我试过这种方法:

var model = new TwoViewModel
{
    Model2 = new IndexViewModel
    {
        Email = user.Email,
        FirstName = user.FirstName,
        LastName = user.LastName,
        City = user.City,
    }
};    
return View(model);

但是另一件事给出了

Object reference not set to an instance of an object.

错误。

@foreach (var item in Model.Model1)
{
    <tr>
        <td>@Html.DisplayFor(modelItem => item.Title)</td>
        ....
    </tr>
}

@foreach (var item in Model.Model1) 行是问题的原因。现在语法很好。我有同一条线可以毫无问题地从第一个模型 (IEnumerable<Name.Models.Project>) 中检索所有内容。我不知道如何处理这个错误

编辑:解决方案是我必须在 ManageController 中的 TwoViewModel 类型的模型中初始化 Model1。这修复了我的错误

导致问题的原因是 Model 1 没有初始化,所以它是 NULL。

解决方案是我必须在 ManageController 中的 TwoViewModel 类型的模型中初始化 Model1。这修复了我的错误