7

リフレクションを使用してモデルのプロパティをループし、Html ヘルパーを使用して名前/値/およびその他の情報を表示しようとしている MVC4 ASP.Net サイトがあります。

以下のメソッドから引数を渡すカスタム Html ヘルパーがあります。

@foreach (PropertyInfo prop in Model.GetType().GetProperties())
{
    <div class="form-group">
        Html.LabelFor( ?? Any ideas ?? )
        <div class="col-sm-9">
            @SuperEditorFor.ReflectiveEditorFor(prop, Model)
            @Html.ValidationMessageFor(model => model.GetType().GetProperty(prop.Name))
        </div>
    </div>
}

のように「プロパティ」(引用符) を入れようとしましたValidationMessageForが、疑ったように、リフレクション propertyInfo オブジェクトではなく、実際の具体的なプロパティが必要です。

これが可能かどうか誰にもわかりますか?誰もこれをやろうとしたことがありますか?

4

2 に答える 2

8

そのためのジェネリック実装を使用する必要はありません ( EditorForDisplayFor...)。非ジェネリック実装を使用するだけEditorですDisplay

これは問題なく動作し、検証、自動バインディング、その他すべて、9ヤード全体を取得できます...

@foreach (PropertyInfo prop in Model.GetType().GetProperties())
{
    <div class="form-group">
        @Html.Label(prop.Name)
        <div class="col-sm-9">
            @Html.Editor(prop.Name)
            @Html.ValidationMessage(prop.Name)
        </div>
    </div>
}

一般的な実装を試してみたい場合は、その方法に関するすばらしいブログ投稿をご覧ください。

http://www.joelscode.com/use-mvc-templates-with-dynamic-generated-types-with-custom-htmlhelper-extensions/

于 2013-11-12T21:28:19.097 に答える
0

あなたが望むようにそれは不可能だと思います。代わりにこれを使用してみてください:

@Html.ValidationSummary()
于 2013-11-12T20:18:20.940 に答える