环顾相似的头衔,但没有任何关键或无效。我理解为什么我会收到错误,我只想弄清楚如何修复它以使用我的EditorForModel
。我收到了这个错误:
传递到字典中的模型项是类型的 'MyNameSpace.ViewModels.MyData + MyEnum',但是这个 字典需要类型的模型项 'MyNameSpace.ViewModels.MyData'。
我的模特:
[UIHint("MyRadioButton")]
public MyEnum MyRadioRadioButton { get; set; }
//
//
public enum MyEnum
{
Choice1,
Choice2
}
我正在使用[UIHint]
来调用名为MyRadioButton.cshtml
的EditorTemplate。现在,我的视图也使用@Html.EditorForModel
调用EditorTemplate。这是调用常规模板的视图页面的一部分:
@Html.EditorForModel("BasicDetails")
两个模板都在'/ Shared / EditorTemplates /'文件夹中。
这是MyRadioButton.cshtml
模板:
<td>
<div class="radio">
@Html.RadioButtonFor(m => m.MyRadioButton, "Choice1")<br />
@Html.RadioButtonFor(m => m.MyRadioButton, "Choice2")
</div>
</td>
这是BasicDetails.cshtml
(由上面的@Html.EditorForModel
调用):
@using MyNameSpace.ViewModels
@model MyData
<table>
@Html.EditorFor(x => x.FirstName)
@Html.EditorFor(x => x.LastName)
@Html.EditorFor(x => x.MyRadioButton) //This is where my error is thrown
</table>
我想在上面的radiobuttonlist编辑器模板中避免任何复杂的事情,因为那里还有其他东西(我删除了所有多余的东西,我仍然得到错误)。我在不同的视图中多次使用特定的radiobuttonlist(这就是为什么我想模板而不是复制/粘贴)。有什么建议吗?
答案 0 :(得分:0)
从BasicDetails.cshtml中调用EditorFor作为@Html.EditorFor(x => x.MyRadioButton)
。
这意味着传递给EditorFor的模型类型是Enum类型。
但是在EditorFor Template(MyRadioButton.cshtml)中,我认为你已经将该类用作模型。所以错误。
因此,我们需要将 MyRadioButton.cshtml 中的模型类型更改为 MyEnum (使用命名空间)
或
将相同的模型传递给editorFor模板@Html.EditorFor(x=>x,"MyRadioButton")
答案 1 :(得分:0)
现在,我只是依靠EditorForModel
从/EditorTemplates/
提取模板,而不是使用[UIHint]
作为单选按钮列表,我只是插入@Html.RadioButtonFor
}该模板内的组。这对我有用,可以最大限度地减少复制/粘贴。
在某些时候,我必须学会停止使用模板&gt;对于模板&gt;对于模板范例,知道什么时候足够了。 :)