2016-04-30 55 views
0

類型的模型項在執行當前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。這固定我的錯誤

+0

[如何創建一個最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –

+0

錯誤消息是不言自明的。你有'@model TwoViewModel'的視圖,但是你在某處傳遞一個模型到這個視圖,這個視圖是'IndexViewModel' –

+0

好吧,我將添加所有代碼,然後才能重現問題 – crystyxn

回答

0

導致問題的原因是模型1沒有初始化,所以它是一個NULL。

解決方法是我必須在ManageController內的TwoViewModel類型的模型中初始化Model1。這修復了我的錯誤

相關問題