SelectList 类在 System.Web.Mvc 命名空间下公开哪些公共属性

本文关键字:属性 System 类在 Web Mvc 命名空间 SelectList | 更新日期: 2023-09-27 18:05:02

SelectList 类的参数化构造函数之一如下所示:

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

我的问题是我想为 dataValueField 和 dataTextField 分配一些值,但不是在实例化类时,而是在稍后阶段可能是在进行一些检查然后动态决定要传递给哪些值之后。

我面临的问题是只有一种方法可以传递dataValueField和dataTextField的值,那就是通过参数化构造函数。

有没有办法我可以使用类的一些属性来分配 dataValueField 和 dataTextField 的值。

谢谢

SelectList 类在 System.Web.Mvc 命名空间下公开哪些公共属性

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");
相关文章: