2009-11-04 95 views
1

我有一個FormViewModel,它包含一個LINQ to SQL結果集和一個List對象。如何在字段中引用ViewData.Model中的字段值字符串名稱

結果集是可以在視圖中顯示的一組所有可能的字段值。

這些Model.AllFields.Field1,Model.AllFields.Field2,...

有一個列表(Model.UserFields),它包含的字段的子集的字符串名稱在AllFields一個特定的用戶想要顯示。

列表中包含(Model.UserFields.ItemSource)字段名稱 「字段3」, 「Field16」,...

我怎麼能做到這一點,其中item.ItemSource是串字段名:(僞VB)

<%For Each item In Model.UserFields%> 
    <td><%=Html.Encode(Model.AllFields(item.ItemSource))%></td> 
<%Next item%> 

我知道我可以改變模型以不同的方式來做到這一點,但有通過像上面的「間接」引用的方式做到這一點?

感謝

回答

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%> 
+0

工程太好了。有沒有辦法在GetValue中處理空值? – 2009-11-04 18:28:02

+0

有幾種方法可以做到這一點,但在這一點上,這段代碼的複雜性可能比您想要的更復雜。我建議在你的視圖頁面創建一個輔助方法(例如在runat = server腳本塊中),它接受字段名並返回字符串值(如果值爲空,則爲空字符串)。 – 2009-11-04 18:44:52

+0

感謝您的幫助! – 2009-11-04 21:05:34

相關問題