Присоедините RequiredValidator к пользовательскому серверному элементу управления, отображающему TextBox - PullRequest
0 голосов
/ 05 мая 2009

Не знаю, возможно ли это на самом деле, но я стараюсь изо всех сил.

Если у меня есть (сложный) пользовательский серверный элемент управления, который (помимо других элементов управления) отображает TextBox в пользовательском интерфейсе. Размещая серверный элемент управления на странице, можно ли присоединить валидатор RequiredField к этому серверному элементу управления, чтобы валидатор проверял свойство Text этого элемента управления, которое указывает на свойство Text отображаемого TextBox?

Конечно, я мог бы включить валидатор RequiredField непосредственно в серверный элемент управления, но по другим причинам это невозможно (мы визуализируем валидаторы RequiredField автоматически в пользовательском интерфейсе).

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 05 мая 2009

Я думаю, что одним из решений является размещение элемента управления TextBox внутри Panel, а затем динамическое добавление элемента управления RequiredValidator в обработчик событий Page_Load.

<asp:Panel ID="Panel1" runat="server">
 <MyCustomTextBox ID="TextBox1" runat="server"></MyCustomTextBox>
 </asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

тогда

protected void Page_Load(object sender, EventArgs e)
        {
            var validator = new RequiredFieldValidator();
            validator.ControlToValidate = "TextBox1";
            validator.ErrorMessage = "This field is required!";
            Panel1.Controls.Add(validator);

        }

Я поместил CustomTextBox внутри панели, чтобы убедиться, что место контроля валидации корректно при добавлении

0 голосов
/ 05 мая 2009

Я понял, второй раз отвечаю на свой пост :) В следующий раз я проведу более глубокое исследование.

Для тех из вас, кто может столкнуться с той же проблемой. Вы должны указать атрибут ValidationProperty в классе вашего серверного элемента управления. Например, если ваш серверный элемент управления предоставляет свойство «Текст», которое отображается для пользователя и которое также должно быть проверено, добавьте следующее:

[ValidationProperty("Text")]

Тогда это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...