7

我们有一个 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>
}

我们已经尝试像在中一样放入“属性”(引用),ValidationMessageFor但正如我们所怀疑的那样,它需要实际的具体属性,而不是反射 propertyInfo 对象。

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

4

2 回答 2

8

您不需要为此使用通用实现(EditorForDisplayFor...),只需使用非通用实现EditorDisplay...

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

@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>
}

如果您想尝试通用实现,这里有一篇很棒的博客文章,介绍了如何做到这一点

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

于 2013-11-12T21:28:19.097 回答
0

我相信这不可能如你所愿。尝试改用它:

@Html.ValidationSummary()
于 2013-11-12T20:18:20.940 回答