C# DropDownList-获取所选项目的自定义属性
我有一个自定义类,它已绑定到DropdownlistC# DropDownList-获取所选项目的自定义属性,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我有一个自定义类,它已绑定到Dropdownlist public class RoleIdSelection { public string RoleID { get; set; } public string RoleDesc { get; set; } public string OrgCode { get; set; } public string OrgName { get; set; } publ
public class RoleIdSelection
{
public string RoleID { get; set; }
public string RoleDesc { get; set; }
public string OrgCode { get; set; }
public string OrgName { get; set; }
public string link { get; set; }
}
List<RoleIdSelection> lstRoles = new List<RoleIdSelection>();
ddlUserProfile.DataSource = lstRoles;
ddlUserProfile.DataTextField = "RoleDesc";
ddlUserProfile.DataValueField = "RoleId";
ddlUserProfile.DataBind();
但它显示了警告
无法将类型“System.Web.UI.WebControl.ListItem”转换为
通过引用转换、装箱转换、,
取消装箱转换,包装转换
您可以重新填充RoleIdSelection列表,然后使用所选值获取RoleIdSelection,也可以序列化RoleIdSelection列表并将其保存在隐藏字段中,以便在回发时检索。这两个选项中的后一个选项使您可以接受客户端的操作 这是第一个选择
//repopulate the List<RoleIdSelection>
List<RoleIdSelection> roles = GetTheRoles();
RoleIdSelection role = roles.First(r => r.RoleID==ddlUserProfile.SelectedItem.Value);
//重新填充列表
列表角色=getheroles();
RoleIdSelection role=roles.First(r=>r.RoleID==ddlUserProfile.SelectedItem.Value);
现在角色有了正确的角色选择非常有操控性。这将暂时拯救我。但是为什么asp.net不支持这种功能呢。我记得我在winforms中很容易做到这一点。@user2564977因为web本质上是无状态的。绑定的数据必须保存在ViewState中,该状态将发送到客户端。由于页面大小和安全问题,不一定要执行某些操作。因此,您不必直接获取所选项目,而是获取绑定项目的ID,然后将该信息从保存它的位置(数据库、会话、视图状态等)拉回来。
//repopulate the List<RoleIdSelection>
List<RoleIdSelection> roles = GetTheRoles();
RoleIdSelection role = roles.First(r => r.RoleID==ddlUserProfile.SelectedItem.Value);