在reflection中循环模型属性,然后使用Html帮助程序显示。 如何获得具体房产?

我们有一个MVC4 ASP.Net站点,我们试图使用reflection来循环模型的属性,并使用Html助手显示名称/值/和其他信息。

我们有一个自定义的Html Helper,我们从下面的方法传递参数。

@foreach (PropertyInfo prop in Model.GetType().GetProperties()) { 
Html.LabelFor( ?? Any ideas ?? )
@SuperEditorFor.ReflectiveEditorFor(prop, Model) @Html.ValidationMessageFor(model => model.GetType().GetProperty(prop.Name))
}

我们已经尝试在ValidationMessageFor中输入“property”(quote),但正如我们所怀疑的那样,它需要实际的具体属性,而不是reflection的propertyInfo对象。

有谁知道这是否可能? 有没有人试过这样做呢?

您不需要使用通用实现( EditorForDisplayFor …),只需使用非generics实现, EditorDisplay ……

这将工作得很好,你会得到validation,自动绑定和其他一切,整个九码……

 @foreach (PropertyInfo prop in Model.GetType().GetProperties()) { 
@Html.Label(prop.Name)
@Html.Editor(prop.Name) @Html.ValidationMessage(prop.Name)
}

如果你想试验一般的实现,这里有一篇很棒的博客文章,介绍如何做到这一点

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

我相信你想要它的方式是不可能的。 尝试使用此代替:

 @Html.ValidationSummary()