Web用户控件和验证

时间:2008-12-11 13:55:27

标签: asp.net validation user-controls

我有一个ASP.Net Web用户控件,其中包含一个TextBox和Ajax Control Toolkit中的日历。

当我在我的页面上包含此用户控件时,我希望它参与输入验证(在UC内的TextBox上设置了必需的文件验证器),即。当页面被验证时,UC的内容也应该被验证。所以我让我的UC实现了IValidator接口,除了我无法在用户控件上设置验证组之外,它运行良好。显然我应该继承BaseValidator来做到这一点,但我不能,因为我已经继承了UserControl。

必须有办法处理这种常见情况。

4 个答案:

答案 0 :(得分:13)

您可以通过将两者用美元符号分隔来引用用户控件中的控件:

<asp:RequiredFieldValidator ControlToValidate="MyUserControl$ControlId" runat="server" />

答案 1 :(得分:10)

在新用户控件上创建一个属性,用于在包含的验证程序上设置验证组。然后从标记中,您只需在控件上设置ValidationGroup属性,然后滚动到用户控件中包含的验证器。除非您创建JUST验证用户控件,否则您可能不需要接口或继承BaseValidator。

public string ValidationGroup
{
   get
   {
      return MyRequiredFieldValidator.ValidationGroup;
   }
   set
   {
      MyRequiredFieldValidator.ValidationGroup = value;
   }
}

答案 2 :(得分:3)

尝试在您的用户控件类上添加[ValidationProperty("NameOfPropertyToBeValidated")

答案 3 :(得分:0)

如果您计划在未来添加大量验证,可能需要查看Peter Blum的DES(数据输入套件) - 它有许多增强的数据输入和验证控制,包括条件验证方案和你正在描述的那个。与自己开发许可所需的时间相比,许可是非常合理的。