在 ASP.NET 中将类绑定到下拉列表

我有一个类站点,它有 3 个属性(设施 ID、设施名称和设施代码)。我想知道是否可以将其绑定到下拉列表,以便在选择一个选项时我可以访问所有 3 个属性。出于测试目的,我只是硬编码 facility_code = "ASV"。


List<Site> sites = new List<Site>();

string responseString = response.Content.ReadAsStringAsync().Result;

sites = JsonConvert.DeserializeObject<List<Site>>(responseString);


Site defaultSite = new Site { facility_id = -1, facility_name = "" };

sites.Insert(0, defaultSite);


sites = sites.Select(x => new Site { facility_id = x.facility_id, facility_name = x.facility_name, facility_code = "ASV" }).ToList();


dropDownSites.DataValueField = "facility_id";

dropDownSites.DataTextField = "facility_name";

dropDownSites.DataSource = sites;

dropDownSites.DataBind();

下面是我不知道如何访问每个站点的属性的地方。我有一条错误消息说“无法将类型 ListItem 转换为站点...)


string facilityCode = (dropDownSites.SelectedItem as Site).facility_code.ToString();


拉丁的传说
浏览 125回答 1
1回答

慕的地6264312

不,您不能绑定多个属性。facility_id您必须在 PostBack 之后使用列表中的 SelectedValue 再次找到正确的项目sites。但是如果你真的想要你可以把所有的属性放在一个字符串中,把它作为DataValueField,然后在 PostBack 上再次拆分字符串。因此,创建一个额外的属性,在单个字符串中返回所有属性。尽管这可行,但它不是最干净的解决方案。public class Site{&nbsp; &nbsp; public int facility_id { get; set; }&nbsp; &nbsp; public string facility_name { get; set; }&nbsp; &nbsp; public string facility_code { get; set; }&nbsp; &nbsp; public string facility_DataValueField&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; get&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return facility_id + ";" + facility_name + ";" + facility_code;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}现在您可以将该属性用作 DataValueFielddropDownSites.DataValueField = "facility_DataValueField";然后在 PostBack 上,您可以拆分 DataValueField 以再次获取值。string [] properties = dropDownSites.SelectedValue.Split(';');
打开App,查看更多内容
随时随地看视频慕课网APP