我有一个FormViewModel,它包含一个LINQ to SQL结果集和一个List对象。
结果集是一组可以在视图中显示的可能字段值。
这些是Model.AllFields.Field1,Model.AllFields.Field2,...
有一个List(Model.UserFields),它包含特定用户想要显示的AllFields中字段子集的字符串名称。
List包含(Model.UserFields.ItemSource)字段名称“Field3”,“Field16”,...
如何实现这一点,其中item.ItemSource是字符串fieldname :(伪VB)
<%For Each item In Model.UserFields%>
<td><%=Html.Encode(Model.AllFields(item.ItemSource))%></td>
<%Next item%>
我意识到我可以改变模型以不同的方式实现这一点,但是有没有办法通过上面的“间接”引用来实现这个目标?
由于
答案 0 :(得分:0)
一种简单的方法(不一定是最快的,但对于几乎所有用例来说可能足够快)是使用反射。我的VB有点生疏,但代码是这样的:
<%For Each item In Model.UserFields%>
<td><%=Html.Encode(Model.AllFields.GetType().GetProperty(item.ItemSource).GetValue(Model.AllFields, Nothing).ToString())%></td>
<%Next item%>