我已阅读this,这有助于我将验证问题缩小到InitialValue
的{{1}}属性。
我的下拉列表是一个对象列表,这些对象由后面的代码填充,如下所示;
RequiredFieldValidator
其中Brand.Empty是一个空对象类型。
我要解开的地方是让brands.Insert(0, Brand.Empty)
cbBrand.DataValueField = "ID";
cbBrand.DataTextField = "Name";
cbBrand.DataSource = new BindingList<Brand>(brands);
cbBrand.DataBind();
接受空值。例如,IntialValue
无法识别列表中的空对象。
有人能指出我解决这个问题的方向吗?
答案 0 :(得分:1)
空字符串与空值不同。不要将空值添加到数据源,而是将其直接添加到下拉列表中,如:
cbBrand.Insert(0, new ListItem("", "Select an item"));
这将为HTML select元素添加一个值为“”的选项,该选项与验证器初始值匹配。
答案 1 :(得分:0)
哇。在发布这个问题之前,我以为我已经在这个网站上搜索了以前的答案,但我错过了this !!
答案是将<asp:DropDownList>
更改为拥有属性AppendDataBoundItems=true
,然后在dropDownList标记和BAM之间添加<asp:ListItem Text="" Value="" />
!您可以在列表中插入一个值,该值不需要在后面的代码中插入空对象(应该删除它,这样您最终不会在列表的开头有2个空格)。
这里的好处是我的代码隐藏中的列表绑定到对象类型<Brand>
,但在客户端添加空字符串可以很好地进行客户端验证。
希望这可以帮助其他人解决这个问题!