4

リフレクションを使用して編集ページを表示し、オブジェクトのすべてのプロパティをループして、各プロパティの適切な編集コントロールを作成したいと考えています。私のビューはこれを行うのに十分に見えます。アプリを実行すると、編集用のコントロールが期待どおりに表示されますが、id = 4 のオブジェクトを編集したいと言います。プロパティごとに、問題は、同じオブジェクトを複数回取得することです。オブジェクトは、同じコントロールとプロパティを使用してページ上で数回繰り返されます。ここで何か不足していますか?

...
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Test</legend>
        <table>
        @{
            var props = Model.GetType().GetProperties();}
            @foreach (var prop in props)
            {
                <tr>
                    <td><div>@Html.EditorFor(model => Model, prop.GetValue(Model, null))</div></td>
                </tr>                                
            }
        </table>
    </fieldset>
}
...
4

1 に答える 1

3

EditorFor ヘルパーの 2 番目の引数は、あなたが考えていることをまったく実行しません。値を提供しようとしているようで、この値が生成されたテキストボックスに表示されることを期待していますが、それはこの引数の目的ではありません。この引数が呼び出さadditionalViewDataれ、その名前が示すように、カスタムの追加ビュー データをエディター テンプレートに渡すことができます。しかし、このビュー データで何か役に立つカスタム エディター テンプレートがなければ、それほど多くのことが起こるとは期待できません。

following blog postASP.NET MVC のテンプレートについて理解を深めるために、 を読むことをお勧めします。

しかし、実際にあなたの質問に答えるには、オブジェクトの各プロパティをレンダリングするカスタム テンプレートを作成しようとしているようです。このジョブを実行するカスタム エディター テンプレートを作成できます。Brad Wilson は、この概念を で説明しています (記事の最後にある「浅いダイブと深いダイブ」following postセクションを参照してください)。

于 2013-04-12T13:21:06.767 に答える