2012-11-09 82 views
0

我使用反射從數據庫存儲過程創建了一個類,我希望能夠在不使用實體或不必創建強類型的情況下將數據表的內容顯示到剃鬚刀視圖班級模型。現在我做的是以下幾點:在mvc 3剃鬚刀視圖中加載反射模型

public static List<object> GetPeople() 
{ 
    DataTable dt = DataAccess.GetPersons(); 

    List<object> obj = MapDataTableToPerson(DataAccess.GetPersons()); 

    return obj; 
} 

private static List<object> MapDataTableToPerson(DataTable dt) 
{ 
    List<object> returnClassObject = new List<object>(); 

    Type typeClass = CreateClassFromDT(dt); 


    foreach (DataRow dr in dt.Rows) 
    { 
     object obj = Activator.CreateInstance(typeClass); 

     foreach(string columnName in ColumnNames) 
     { 
      PropertyInfo property = typeClass.GetProperty(columnName); 

      property.SetValue(obj, dr[columnName], null); 
     } 

     returnClassObject.Add(obj); 
    } 

    return returnClassObject; 
} 

我打電話GetPeople從控制器,並通過對一個觀點,但我對如何從剃刀創建的類獲取值沒有任何線索,如果有人能幫助它將不勝感激。

+1

我很想知道爲什麼你不想要(模型/視圖模型)類來做到這一點? – Shyju

+0

我工作的公司對數據庫進行了大量更改,他們不希望每次更改時重新編譯和發佈。 – triangulito

+0

如果你打算爲大量的地方使用這種方法,那麼以後很難閱讀代碼。現在投入一些時間,並節省金錢和時間 – Shyju

回答

1

將DataTable模型傳遞給視圖並循環遍歷列和行。我不認爲你需要使用反射,只需從數據庫中獲取DataTable。

+0

我甚至都沒有想到這個...,這很有道理,將它傳遞給我的項目負責人,並問他這是否更好。謝謝。 – triangulito

+0

儘管出於某種奇怪的原因,其中一個參數未被正確傳遞,但這完全是另一個問題 – triangulito