当我从@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
个实例。
答案 0 :(得分:0)
它不直观,但如果 templateName 的值没有映射到EditorTemplates
目录中的文件名,则会抛出此错误。例如,如果Model.MyType.Template
返回字符串MyTemplate
,但没有相应的~/Views/Controller/EditorTemplates/MyTemplate.cshtml
。
在这种特殊情况下,有一个错误的Model.MyType.Template
值,它没有正确映射到任何EditorTemplates
。
我想DisplayFor()
会发生类似的错误。