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

Sna*_*ops 7 c# reflection asp.net-mvc-4

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

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

@foreach (PropertyInfo prop in Model.GetType().GetProperties())
{
    <div class="form-group">
        Html.LabelFor( ?? Any ideas ?? )
        <div class="col-sm-9">
            @SuperEditorFor.ReflectiveEditorFor(prop, Model)
            @Html.ValidationMessageFor(model => model.GetType().GetProperty(prop.Name))
        </div>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

我们已经尝试过输入"属性"(引用),ValidationMessageFor但正如我们所怀疑的那样,它需要实际的具体属性,而不是反射的propertyInfo对象.

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

Dav*_*trg 7

您不需要使用通用实现(EditorFor,DisplayFor...),只需使用非泛型实现Editor,Display...

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

@foreach (PropertyInfo prop in Model.GetType().GetProperties())
{
    <div class="form-group">
        @Html.Label(prop.Name)
        <div class="col-sm-9">
            @Html.Editor(prop.Name)
            @Html.ValidationMessage(prop.Name)
        </div>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

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

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