【发布时间】:2010-03-16 16:45:50
【问题描述】:
我正在开发一个 Web 应用程序,我想在其中对某个字段(特定情况下的帐户名称)执行一组验证。
我需要检查该值是否为空,是否与某个模式匹配并且尚未使用。
我尝试创建一个 UserControl,它聚合了一个 RequiredFieldValidator、一个 RegexValidator 和一个 CustomValidator,然后我创建了一个 ControlToValidate 属性,如下所示:
public partial class AccountNameValidator : System.Web.UI.UserControl {
public string ControlToValidate {
get { return ViewState["ControlToValidate"] as string; }
set {
ViewState["ControlToValidate"] = value;
AccountNameRequiredFieldValidator.ControlToValidate = value;
AccountNameRegexValidator.ControlToValidate = value;
AccountNameUniqueValidator.ControlToValidate = value;
}
}
}
但是,如果我在页面上插入控件并将 ControlToValidate 设置为某个控件 ID,当页面加载时,我会收到一条错误消息,提示 无法找到由“ControlToValidate”引用的控件 ID“AccountName” 'AccountNameRequiredFieldValidator'的属性,这让我觉得我的UserControl中的控件无法正确解析父页面中的控件。
所以,我有两个问题:
1) 是否可以让 UserControl 中的验证器控件验证父页面中的控件?
2) 在 UserControl 中“聚合”多个验证器控件是否正确且良好?如果不是,那么进行的标准方法是什么?
【问题讨论】:
标签: c# asp.net user-controls validation