類型的模型項在執行當前Web請求期間生成未處理的異常。關於異常的來源和位置的信息可以使用下面的異常堆棧跟蹤來標識。ASP.NET MVC 5傳入字典的模型項目類型爲'Name.Models.IndexViewModel',但該字典需要
堆棧跟蹤:
出現InvalidOperationException:傳遞到字典 類型爲「Name.Models.IndexViewModel」的模型項目,但這個字典 需要類型的模型項目「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);
但隨後另一件事給了不設置到對象的實例的
對象引用。
錯誤。
@foreach (var item in Model.Model1)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Title)</td>
....
</tr>
}
This @foreach (var item in Model.Model1
)line is the cause of the problem。現在語法很好。我有這條線可以從第一個模型(IEnumerable<Name.Models.Project>
)中檢索所有的東西,沒有任何問題。我不知道如何處理這個錯誤
編輯:解決方案是,我必須在ManageController內的類型TwoViewModel模型內初始化模型1。這固定我的錯誤
[如何創建一個最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –
錯誤消息是不言自明的。你有'@model TwoViewModel'的視圖,但是你在某處傳遞一個模型到這個視圖,這個視圖是'IndexViewModel' –
好吧,我將添加所有代碼,然後才能重現問題 – crystyxn