如何在ASP.NET MVC

时间:2016-08-26 12:26:20

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

背景

我的ASP.NET MVC应用程序允许用户创建自定义报告并选择要显示的字段,字段顺序等。视图应该能够读取这些自定义报告配置并相应地显示模型字段。

示例

1)假设我们有一个名为Person的模型 - Id,Name,Age,Address,Height。

2)假设自定义报告配置位于名为CustomReportConfig的模型中 - 仅显示年龄,名称和高度(按此顺序)。

现在,View中应该发生的事情是(假设存在一个包含Person和CustomReportConfig的ViewModel)

foreach(string fieldName in @model.ViewModel.CustomReportConfig)
    @model.ViewModel.Person.**fieldName**

正如您所注意到的,上面代码中的fieldName部分是一个字符串变量,但在Views中,这应该是静态类型的。

问题

是否可以在上面的代码中为fieldName中的 @model.Person.fieldName 部分使用变量?

注意:我知道这可以通过if else条件为每个字段或反射或在ViewModel等中创建通用DataTable类型的对象来完成,但我想知道有更好的方法来创建它以编程方式在@ model.Person.fieldName中的fieldName。

1 个答案:

答案 0 :(得分:0)

也许保留一个字段/属性名称列表,并使用反射来获取属性?

可能更简洁的方法是保留每个实现某个界面的对象列表,然后循环遍历列表。

foreach (IMyCustomInterface obj in @model.ViewModel.CollectionOfCustomReportConfigs) 
    @obj.ToRenderedString()