例如,我有一个以下类声明的实例:
public class Person
{
public string Name = "";
public Dictionary<string, string> Properties = new Dictionary<string, string>();
}
我有一个人的列表,我希望绑定到Asp.NET下拉列表。
List<Person> people = new List<Person>();
//fill the list etc..
//bind to the drop down list
ddlPeople.DataSource = people;
ddlPeople.DataTextField = "Name";
ddlPeople.DataTextField = "Properties['Age']"; //this is what I would like!
年龄永远存在。我无法掌控这个人。有谁知道我想做的事情是否可以实现?
谢谢!
答案 0 :(得分:1)
据我所知,你不能这样做。
我想我会选择:
ddlPeople.Items.Clear();
ddlPeople.Items.AddRange(people.Select(p => new ListItem(p.Name, p.Properties["Age"])).ToArray());
但我不确定这是你问题的重点。
答案 1 :(得分:0)
也许你可以在你的人类上创建一个只读属性?
public class Person
{
public string Name = "";
public Dictionary<string, string> Properties = new Dictionary<string, string>();
public int Age
{
get
{
// ... code to handle situations where Properties
// is null or does not contain key
return (int)this.Properties["Age"];
}
}
}
我相信你在WPF中寻求的那种绑定是可能的,但我认为我从未在ASP.NET中看到它。