Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Элемент управления TextBoxWatermark в наборе элементов управления AJAX расширяет текстовое поле, чтобы текст отображался в поле. Когда пользователь щелкает по окну, оно становится пустым. Если пользователь покидает поле без ввода текста, предварительно заполненный текст снова появится. Это может конфликтовать с элементами управления валидацией ASP.NET на той же странице, но эти проблемы могут быть преодолены.
Обзор
Элемент TextBoxWatermark управления в наборе элементов управления AJAX расширяет текстовое поле, чтобы текст отображался в поле. Когда пользователь щелкает по окну, оно становится пустым. Если пользователь покидает поле без ввода текста, предварительно заполненный текст снова появится. Это может конфликтовать с элементами управления проверки ASP.NET на той же странице, но эти проблемы можно преодолеть.
Шаги
Базовая настройка примера следующая: TextBox контрол используется в качестве водяного знака с помощью TextBoxWatermarkExtender контрола. Кнопка активирует postback и позже будет использоваться для активации контролей валидации на странице. Кроме того, ScriptManager элемент управления требуется для инициализации ASP.NET AJAX:
<form id="form1" runat="server">
<asp:ScriptManager ID="asm" runat="server" />
<div>
<asp:TextBox ID="Name" runat="server" /> <br />
<asp:Button ID="btn" runat="server" Text="Submit" OnClick="btn_Click" /><br />
<asp:Label ID="lbl" runat="server" />
</div>
<ajaxToolkit:TextBoxWatermarkExtender ID="tbwe" runat="server"
TargetControlID="Name" WatermarkText=" Your Name " />
</form>
Теперь добавьте RequiredFieldValidator элемент управления, который проверяет наличие текста в поле при отправке формы. Для свойства InitialValue валидатора должно быть установлено то же значение, которое используется в управляющем элементе TextBoxWatermarkExtender: когда форма отправляется, значение неизменного текстового поля является значением водяного знака.
<asp:RequiredFieldValidator ID="rfv1" ControlToValidate="Name"
Text="*" InitialValue=" Your Name " Display="Dynamic" runat="server" />
Однако, существует одна проблема с этим подходом: если клиент отключает JavaScript, текстовое поле не заполняется текстом водяного знака, поэтому сообщение об ошибке в RequiredFieldValidator не отображается. Поэтому требуется второй RequiredFieldValidator элемент управления, который проверяет наличие пустого InitialValue текстового поля (пропуская атрибут).
<asp:RequiredFieldValidator ID="rfv2" ControlToValidate="Name"
Text="*" Display="Dynamic" runat="server" />
Поскольку оба валидатора используют Display="Dynamic", конечный пользователь не может по внешнему виду определить, какой из двух валидаторов был использован; ему кажется, что использован только один из них.
Наконец, добавьте код на стороне сервера, чтобы вывести текст в поле, если проверяющий элемент не выпустил сообщение об ошибке:
<script runat="server">
protected void btn_Click(object sender, EventArgs e)
{
lbl.Text = HttpUtility.HtmlEncode(Name.Text);
}
</script>
Валидатор сообщает об отсутствии текста в поле (Щелкните, чтобы просмотреть изображение полного размера)