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。这修复了我的错误
在执行当前网络请求时产生了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
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。这修复了我的错误