我有一个Asp.Net转发器,它包含一个文本框和一个复选框。我需要添加客户端验证,验证当选中复选框时,文本框只能接受零值或空白。
我想使用一个或多个Asp.Net的验证器控件来实现此目的,为客户端错误提供一致的显示(服务器端错误由另一个子系统处理)。
Asp:CompareValidator似乎不够灵活,无法执行这种复杂的比较,所以我只看着Asp:CustomValidator。
我遇到的问题是似乎没有任何方法可以将自定义信息传递给验证功能。这是一个问题,因为复选框和文本框的ClientIds在运行时是未知的(因为它们是Repeater的一部分)。
所以...我的选择似乎是:
关于什么可能是更好的实现方法的想法?
答案 0 :(得分:2)
我认为最好的方法是在新类中继承BaseValidator,并将这些ID作为属性传递给控件。您应该能够在验证器中解析ID,而无需知道在运行时生成的完整客户端ID。您应首先在服务器上验证数据,然后在客户端上验证数据。
答案 1 :(得分:0)
你能不把CustomValidator放在转发器里面吗?如果没有,您可以在绑定转发器和用户FindControl()
时动态创建它protected MyDataBound(object sender, RepeaterItemEventArgs e) {
(CheckBox)cb = (CheckBox)e.Item.FindControl("myCheckboxName");
(TextBox)tb = (TextBox)e.Item.FindControl("myTextBox");
}
......或类似的东西。我把代码放在了头顶。