我正在为此下拉列表添加自定义属性,
<asp:DropDownList ID="ddlFirst" runat="server" ClientIDMode="Static"></asp:DropDownList>
在我正在添加自定义属性
的代码中ListItem deleteMeLi = new ListItem("Mango", "");
deleteMeLi.Attributes.Add("data-IsMangoRotten", "0");
ddlFirst.Items.Add(deleteMeLi);
现在,当我试图像这样获得价值时,
int rottenM = Convert.ToInt32(ddlFirst.SelectedItem.Attributes["data-IsMangoRotten"].ToString());
它抛出对象是空的预期,
调试时我发现ddlFirst的属性数是0,但是在HTML中我可以看到使用开发人员工具的属性
答案 0 :(得分:2)
问题是DropDownList
在客户端呈现为<select>
元素,因此,您无法在HTML中向<option>
元素添加属性并在其上检索它服务器端,因为它们没有发布。当然,您可以通过普通的Javascript在客户端访问它们,但不要将它们发布到服务器上。
答案 1 :(得分:0)
您的示例可以自行运行。
我怀疑您在将deleteMeLi添加到ddlFirst之前尝试获取SelectedItem的属性,因此您尝试获取null对象的属性并获取异常。
检查在页面生命周期中何时添加ListItem以及何时尝试获取属性值。