我想使用反射显示编辑页面,循环浏览对象的所有属性,并为每个属性创建正确的编辑控件。 我的视图看起来很好,我运行应用程序和编辑控件按预期显示,但是,我想要编辑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>
}
...
答案 0 :(得分:3)
EditorFor帮助器的第二个参数根本没有做到你认为它做的事情。您似乎试图为其提供一个值,并期望此值将显示在生成的文本框中,但这不是该参数的用途。此参数称为additionalViewData
,顾名思义允许您将自定义附加视图数据传递给编辑器模板。但是,如果您没有自定义编辑器模板对此视图数据执行某些有用的操作,那么您不会指望会发生太多事情。
我建议您阅读following blog post
以更好地熟悉ASP.NET MVC中的模板。
但是要真正回答您的问题,您似乎正在尝试编写一个自定义模板,该模板将呈现您对象的每个属性。您可以编写一个自定义编辑器模板来完成这项工作。布拉德·威尔逊在following post
中阐述了这个概念(在文章的最后看一下浅水潜水与深潜部分)。