下拉列表中的RequiredFieldValidator不接受空对象的IntialValue

时间:2011-07-12 01:34:10

标签: c# asp.net requiredfieldvalidator

我已阅读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无法识别列表中的空对象。

有人能指出我解决这个问题的方向吗?

2 个答案:

答案 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>,但在客户端添加空字符串可以很好地进行客户端验证。

希望这可以帮助其他人解决这个问题!