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 助手的第二个参数根本不像你想象的那样做。您似乎试图为其提供一个值,并期望该值将显示在生成的文本框中,但这不是该参数的用途。调用此参数additionalViewData,顾名思义,它允许您将自定义的附加视图数据传递给编辑器模板。但是,如果您没有自定义编辑器模板来对视图数据做一些有用的事情,您就不能期望会发生这么多事情。

我建议您阅读following blog post以更好地熟悉 ASP.NET MVC 中的模板。

但要真正回答您的问题,您似乎正在尝试编写一个自定义模板来呈现您的对象的每个属性。您可以编写一个自定义编辑器模板来完成这项工作。following postBrad Wilson 在(查看文章末尾的“浅潜与深潜”部分)中说明了这个概念。

于 2013-04-12T13:21:06.767 回答