0

同様のタイトルを見回しましたが、適切なものや何も機能しませんでした。エラーが発生する理由を理解しています。エラーを修正してEditorForModel. このエラーが発生しています:

ディクショナリに渡されたモデル アイテムのタイプは 'MyNameSpace.ViewModels.MyData+MyEnum' ですが、このディクショナリにはタイプ 'MyNameSpace.ViewModels.MyData' のモデル アイテムが必要です。

私のモデル:

    [UIHint("MyRadioButton")]
    public MyEnum MyRadioRadioButton { get; set; }

    //
    //
    public enum MyEnum
    {
        Choice1,
        Choice2            
    }

[UIHint]という名前の EditorTemplate を呼び出すために使用しています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>

上記の radiobuttonlist エディター テンプレートで複雑なことは避けたいと思います。なぜなら、そこには他のことが起こっているからです (余分なものをすべて取り除きましたが、まだエラーが発生しています)。特定の radiobuttonlist をさまざまなビューで複数回使用します (これが、コピー/貼り付けではなくテンプレートにしたかった理由です)。何かアドバイス?

4

2 に答える 2

0

EditorForModel今のところ、 からテンプレートを取得することに頼っているだけです。ラジオ ボタン リストに/EditorTemplates/を使用する代わりに、そのテンプレート内にグループを挿入するだけです。これは私にとってはうまくいき、コピー/貼り付けを最小限に抑えるのに役立ちます.[UIHint]@Html.RadioButtonFor

ある時点で、テンプレート > テンプレートの場合 > テンプレート パラダイムの場合は、テンプレートをやめて、いつ十分なのかを知る必要があります。:)

于 2012-03-02T12:30:21.133 に答える