可以将包含Dictionary属性的对象绑定到下拉列表吗?

时间:2013-02-12 16:19:01

标签: asp.net data-binding

例如,我有一个以下类声明的实例:

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!

年龄永远存在。我无法掌控这个人。有谁知道我想做的事情是否可以实现?

谢谢!

2 个答案:

答案 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中看到它。