0

环顾了类似的标题,但没有任何意义或没有任何效果。我明白为什么会出现错误,我只是想弄清楚如何修复它以使用我的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. 这是调用通用模板的视图页面的一部分:

@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>

我想避免在上面的单选按钮列表编辑器模板中出现任何复杂的东西,因为那里还有其他东西(我去掉了所有多余的东西,但仍然出现错误)。我在不同的视图中多次使用特定的单选按钮列表(这就是为什么我想对其进行模板化而不是复制/粘贴)。有什么建议吗?

4

2 回答 2

0

从 BasicDetails.cshtml 您正在调用 EditorFor as @Html.EditorFor(x => x.MyRadioButton)

这意味着传递给 EditorFor 的模型类型是 Enum 类型。

但在 EditorFor 模板 (MyRadioButton.cshtml) 中,我认为您已将该类用作模型。所以错误。

因此,我们需要将 MyRadioButton.cshtml 中的模型类型更改MyEnum (With namespace)

或者

将相同的模型传递给 editorFor 模板@Html.EditorFor(x=>x,"MyRadioButton")

于 2012-02-25T01:31:51.270 回答
0

现在我只是依靠从EditorForModel中提取模板/EditorTemplates/,而不是使用[UIHint]单选按钮列表,我只是@Html.RadioButtonFor在该模板中插入组。这对我有用,可以最大限度地减少复制/粘贴。

在某些时候,我必须学会停止使用模板 > 模板 > 模板范例,并知道什么时候足够了。:)

于 2012-03-02T12:30:21.133 回答