2016-08-26 53 views
0

背景如何顯示訪問模型/視圖模型的編程領域鑑於ASP.NET MVC

我的ASP.NET MVC應用程序允許用戶創建自定義報表,並選擇喜歡要顯示的字段,字段等的順序的東西。視圖應該能夠讀取這些自定義報告配置並相應地顯示模型字段。

1)假設我們有一個叫做Person模型 - ID,姓名,年齡,地址,身高。

2)假設自定義報告配置位於名爲CustomReportConfig的模型中 - 僅顯示年齡,名稱和高度(按此順序)。

現在,在視圖應該發生什麼是一樣的東西(假設存在同時包含人與CustomReportConfig一個ViewModel)

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

你可能注意到了,在上面的代碼中的字段名的部分是一個字符串變量但在視圖中,這應該是靜態類型。

問題

是否有可能在上面的代碼中使用的變量爲fieldName部分@model.Person.fieldName

注:我明白,這可以通過如果其他條件爲每個字段或反射或在ViewModel等創建一個通用的DataTable類型的對象,但我想知道有更好的方法來做到這一點,只需創建以編程方式在@ model.Person.fieldName中的fieldName。

回答

0

也許保留字段/屬性名稱的列表,並使用反射來獲取屬性?

可能一個簡單的方法是保持每個實現某個接口的對象列表,然後循環遍歷該列表。

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