Обработка RequiredFieldValidator внутри пользовательского элемента управления - PullRequest
3 голосов
/ 28 января 2011

У меня есть пользовательский элемент управления, который состоит из TextBox с несколькими дополнениями, но для целей этого примера достаточно предположить, что это обычный TextBox. Я вызываю этот пользовательский элемент управления из веб-формы и хотел бы иметь возможность использовать RequiredFieldValidator, который в основном функционировал бы так же, как если бы я использовал его в TextBox в веб-форме. Как мне настроить мой пользовательский элемент управления для обработки этого?

EDIT:

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 ]

3 голосов
/ 28 января 2011

Вам необходимо установить атрибут ValidationProperty в элементе управления и предоставить свойство Textbox Text как свойство элемента управления

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

 }
0 голосов
/ 28 января 2011

Добавить свойство в пользовательский элемент управления:

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

А затем для контроля проверки программно установите его из кода:

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

На самом деле я не знаю, будет ли это работать таким образом, но вы также можете попробовать UniqueID или идентификатор напрямую и посмотреть, если что-то из этого имеет значение.

Либо так, либо измените TextBoxID на TextboxText, и верните myControlTB.Text, и добавьте [ValidationProperty ("TextBoxText")] к элементу управления, и установите ControlToValidate в обязательном поле для валидатора для пользовательского элемента управления.

Попробуйте один из этих подходов,

НТН.

...