2014-09-02 93 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