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