如何在不知道模型类型的情况下创建动态数据驱动视图

时间:2018-01-12 02:11:19

标签: c# asp.net-mvc entity-framework

我正在创建一个数据驱动的应用程序,它从excel导入大量数据。但是,我必须首先处理数据位并将其放入EF模型中,然后在提交到数据库之前,将其全部呈现给用户在一堆表中进行确认。我只是想知道如何在视图中轻松渲染它。

我的模型基本上是Dictionary<string, List<object>>,其中键是模型名称,列表是模型对象的列表。它的对象类型的原因是因为每个列表将是与其EF模型相对应的不同类型。例如:

<"Model1", List<Model1>>, <"Model2", List<Model2>>, ...

问题是,如何查看列表中我不知道类型信息的每个对象,并以表格格式逐字段呈现它?如果这是不可能的,或者不建议使用强类型语言,你能推荐一种更好的方法吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以通过反思来做到这一点:

@model Dictionary<string, List<object>>

@foreach (var table in Model)
{
    var properties = table.Value.First().GetType().GetProperties();
    <h4>@table.Key</h4>
    <table>
        <thead>
            <tr>
                @foreach (var head in properties)
                {
                    <th>@head.Name</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (var item in table.Value)
            {
                @:<tr>
                    foreach (var property in properties)
                    {
                       <td>@property.GetValue(item)</td>
                    }
                @:</tr>
            }
        </tbody>
    </table>
}