背景
我的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。
答案 0 :(得分:0)
也许保留一个字段/属性名称列表,并使用反射来获取属性?
可能更简洁的方法是保留每个实现某个界面的对象列表,然后循环遍历列表。
foreach (IMyCustomInterface obj in @model.ViewModel.CollectionOfCustomReportConfigs)
@obj.ToRenderedString()