接收数据类型不匹配调用`EditorFor()`

时间:2017-10-08 23:23:52

标签: c# asp.net-mvc razor asp.net-mvc-5.2

当我从@Html.EditorFor()视图中致电*.cshtml时,我收到错误消息:

  

传递到字典中的模型项的类型是`System.Boolean',但是这个字典需要一个类型为' MyType'的模型项。

那就是说,我相信我正在传递一个正确类型的模型。我的代码看起来像这样:

Html.EditorFor(m => m.MyType, Model.MyType.Template, Model.MyType.Field)

MyType是绑定到每个EditorTemplate页面的模型。 Template属性的值对应于EditorTemplate页面的名称,Field属性的值映射到 htmlField 名称(两个返回字符串)。

根据错误,我希望Model.MyType返回Boolean值而不是MyType值,但我已经确认情况并非如此。我甚至可以写出@Model.MyType.GetType()并看到它正确检索MyType个实例。

1 个答案:

答案 0 :(得分:0)

它不直观,但如果 templateName 的值没有映射到EditorTemplates目录中的文件名,则会抛出此错误。例如,如果Model.MyType.Template返回字符串MyTemplate,但没有相应的~/Views/Controller/EditorTemplates/MyTemplate.cshtml

在这种特殊情况下,有一个错误的Model.MyType.Template值,它没有正确映射到任何EditorTemplates

我想DisplayFor()会发生类似的错误。