处理用户控件内的RequiredFieldValidator

我有一个用户控件,它包含一个带有一些附加function的TextBox,但是为了这个例子的目的,假设它是一个普通的TextBox就足够了。 我从Web窗体调用此用户控件,并希望能够使用一个基本上与我在Web窗体上的TextBox上使用它的function相同的RequiredFieldValidator。 如何配置用户控件来处理此问题?

编辑:

DatePicker.ascx

 

DatePicker.ascx.cs

 [ValidationProperty("Text")] public partial class DatePicker : System.Web.UI.UserControl { public String Text { get { return myControlTB.Text; } set { myControlTB.Text = value; } } protected void Page_Load(object sender, EventArgs e) { } } 

WebForm.aspx

    

WebForm.aspx.cs

 protected void btnSubmit_Click(object sender, EventArgs e) { Page.Validate(); if (Page.IsValid) { // e-mail the form } 

您需要在控件上设置ValidationProperty属性,并将Textbox Text属性公开为控件属性

  [ValidationProperty("Text")] public partial class Control { public string Text { get { return textbox.Text;} } } 

将属性添加到用户控件:

 public string TextBoxID { get { return myControlTB.ClientID; } } 

然后为validation控件,可编程地从代码中设置它:

 void Page_Load(..) { this.rfv.ControlToValidate = this.uc.TextBoxID; } 

我实际上不知道它是否会以这种方式工作,但您也可以直接尝试UniqueID或ID,并查看是否有任何区别。

或者,或者将TextBoxID更改为TextboxText,并返回myControlTB.Text,并在控件上添加[ValidationProperty(“TextBoxText”)],并将必需字段validation器上的ControlToValidate设置为用户控件。

尝试其中一种方法,

HTH。