Asp.net mvc 4 MVC 4 Html.EditorFor不工作

Asp.net mvc 4 MVC 4 Html.EditorFor不工作,asp.net-mvc-4,Asp.net Mvc 4,我想使用反射显示编辑页面,循环遍历对象的所有属性,并为每个属性创建正确的编辑控件。 我的视图看起来足够好,可以这样做,我运行应用程序,编辑控件按预期显示,但是,假设我想编辑id=4的对象,通常我应该在页面上该对象一次,每个属性都有编辑控件,问题是我多次获得同一对象,该对象使用相同的控件和属性在页面上重复多次。我是不是遗漏了什么 ... @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset>

我想使用反射显示编辑页面,循环遍历对象的所有属性,并为每个属性创建正确的编辑控件。 我的视图看起来足够好,可以这样做,我运行应用程序,编辑控件按预期显示,但是,假设我想编辑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>
}
...
。。。
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
试验
@{
var props=Model.GetType().GetProperties();}
@foreach(道具中的var道具)
{
@EditorFor(model=>model,prop.GetValue(model,null))
}
}
...

editorforhelper的第二个参数与您认为的完全不同。您似乎试图为它提供一个值,并期望该值将显示在生成的文本框中,但这不是此参数的目的。此参数称为
additionalViewData
,顾名思义,它允许您将自定义的附加视图数据传递给编辑器模板。但是,如果您没有一个自定义编辑器模板来处理这些视图数据,那么您就不能期望会发生很多事情

我建议您阅读,以便更好地熟悉ASP.NET MVC中的模板


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

我想知道,为什么不能为模型的每个属性使用html帮助程序。@von只是因为我想动态使用编辑控件,我不想在更改模型中的某些内容时手动添加控件。+1我总是喜欢用这种方式解释此类问题。我必须同意von v。此处:)