为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
拉丁的传说 2022-10-15 15:14:01
我有一个类站点,它有 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();
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

不,您不能绑定多个属性。facility_id您必须在 PostBack 之后使用列表中的 SelectedValue 再次找到正确的项目sites。


但是如果你真的想要你可以把所有的属性放在一个字符串中,把它作为DataValueField,然后在 PostBack 上再次拆分字符串。因此,创建一个额外的属性,在单个字符串中返回所有属性。尽管这可行,但它不是最干净的解决方案。


public class Site

{

    public int facility_id { get; set; }

    public string facility_name { get; set; }

    public string facility_code { get; set; }


    public string facility_DataValueField

    {

        get

        {

            return facility_id + ";" + facility_name + ";" + facility_code;

        }

    }

}

现在您可以将该属性用作 DataValueField


dropDownSites.DataValueField = "facility_DataValueField";

然后在 PostBack 上,您可以拆分 DataValueField 以再次获取值。


string [] properties = dropDownSites.SelectedValue.Split(';');


查看完整回答
反对 回复 2022-10-15
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信