2013-03-20 46 views
0

一的SelectList類的參數的構造函數的是這樣的: -System.Web.Mvc命名空間下的SelectList類存在哪些公共屬性?

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue); 

我的問題是我要分配一些值dataValueField和dataTextField但不同時實例化類,而在後一階段可能會後進行一些檢查,然後動態決定傳遞給哪些值。

我面臨的問題是隻有一種方法可以傳遞dataValueField和dataTextField的值,也就是通過參數化的構造函數。

有沒有一種方法可以使用該類的某些屬性來分配dataValueField和dataTextField的值。

感謝

回答

1

dataValueFielddataTextFieldMultiSelectList私有成員,這是SelectList的基類,所以你可以使用反射設置這些字段。例如:

var selectList = new SelectList(new Dictionary<int, int> { { 1, 2 }, { 3, 4} }); 

    var privateFields = selectList.GetType().BaseType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic); 

    privateFields.Single(i => i.Name.Contains("DataTextField")) 
       .SetValue(selectList, "value"); 

    privateFields.Single(i => i.Name.Contains("DataValueField")) 
       .SetValue(selectList, "key"); 
相關問題