c# - 在反射中循环遍历模型属性,然后使用 Html 帮助程序进行显示。如何取回具体属性(property)?

标签 c# asp.net-mvc-4 reflection

我们有一个 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 对象。

有人知道这是否可行吗?以前有人试过这样做吗?

最佳答案

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

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

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

关于c# - 在反射中循环遍历模型属性,然后使用 Html 帮助程序进行显示。如何取回具体属性(property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915587/

相关文章:

c# - 如果它有值,我应该如何使用可空类型

c# - 如何从字节数组(在内存中)运行方法?

.net - ResolveEventArgs.RequestingAssembly 为 Null

c# - wpf如何从嵌套 View 切换父选项卡

c# - 使用C#将文本框中的数据写入ASP.net中的文本文件

asp.net-mvc - 让 System.Web.Optimization 在类库中的 Razor View 中工作

c# - 使下拉列表相互依赖

c# - 将域名附加到编辑器的电子邮件中

java - 将方法实现作为参数发送

c# - 来自 HTML Agility Pack 中行号/位置号的 HTMLNode