如何通过字段字符串名称引用ViewData.Model中的字段值

时间:2009-11-04 15:49:57

标签: asp.net-mvc

我有一个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%>

我意识到我可以改变模型以不同的方式实现这一点,但是有没有办法通过上面的“间接”引用来实现这个目标?

由于

1 个答案:

答案 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%>