2014-09-02 52 views
1

我的看法是Html.DisplayForModel拋出InvalidOperationException異常

@model List<string> 
... 
@Html.DisplayForModel("Name") 
... 

我的 「名稱」 顯示模板是

@model string 
<span>@Model</span> 

這不是工作,我得到:

模型項目通過到字典中是類型'System.Collections.Generic.List 1 [string]',但是這本字典需要一個'string'`類型的模型項目。

有什麼問題我在這裏做?

+1

可能原因:產品型號== NULL – Andrei 2014-09-02 11:53:59

回答

2

您的第一個列表的模型是List<string>,您將此模型傳遞給顯示模板。但顯示模板需要string型號的型號。您的顯示模板還應該期待一個字符串列表:

@model List<string> 
@foreach(var item in Model) 
{ 
    <span>@item</span> 
} 
+0

我想DisplayFor()可以用來顯示模型的項目列表如下回答:HTTP:// stackoverflow.com/questions/11261590/mvc-razor-foreach – santhudr 2014-09-02 12:05:19

+0

@santhudr如果您將視圖的模型類型更改爲'IEnumerable ',然後使用'@ Html.DisplayFor(x => x,「Name」 )'而不是使用'@ Html.DisplayForModel(「Name」)'? – 2014-09-02 12:13:46

+0

我剛剛發現了另一篇文章,提出了相同的問題 - http://stackoverflow.com/questions/8678802/why-is-my-displayfor-not-looping-through-my-ienumerabledatetime。這是因爲我給了模板名稱。 @ Html.DisplayForModel()工作正常! :) – santhudr 2014-09-02 14:06:58

相關問題