处理用户控件内的RequiredFieldValidator

时间:2011-01-28 15:14:46

标签: c# asp.net requiredfieldvalidator

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

修改

DatePicker.ascx

<asp:TextBox runat="server" ID="myControlTB">

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

<cu:UserControl runat="server" ID="myControl">
<asp:RequiredFieldValidator runat="server" errormessage="This is a required field." ControlToValidate="myControl">
<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" />

WebForm.aspx.cs

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

2 个答案:

答案 0 :(得分:3)

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

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

 }

答案 1 :(得分:0)

向用户控件添加属性:

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

然后对于验证控件,可编程地从代码中设置它:

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

我实际上不知道它是否会以这种方式工作,但您也可以直接尝试使用UniqueID或ID,并查看其中是否存在任何差异。

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

尝试其中一种方法,

HTH。