3

我有一个用户控件,它由一个带有一些附加功能的 TextBox 组成,但就本示例而言,假设它是一个纯 TextBox 就足够了。我正在从 Web 表单调用此用户控件,并希望能够使用 RequiredFieldValidator,它的功能基本上与我在 Web 表单上的 TextBox 上使用它的功能相同。如何配置我的用户控件来处理这个问题?

编辑:

日期选择器.ascx

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

日期选择器.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
    }
4

2 回答 2

3

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

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

 }
于 2011-01-28T15:18:03.990 回答
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。

于 2011-01-28T15:35:17.307 回答