处理用户控件内的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。