ASP.NET AJAX Control Toolkit提供了多个与文本输入相关的控件,用户使用这些控件能够实现多样式文本输入功能,如添加水印提示、拒绝非法字符、多样式验证、智能密码强度提示、在线智能输入建议、弹出式日历选择输入、控制并验证用户输入格式、可选择输入等。本章介绍应用ASP.NET AJAX Control Toolkit中的控件(如TextBoxWatermark、FilteredTextBox、ValidatorCallout、PasswordStrength、AutoComplete、Calendar、PopupControl等)实现上述功能的方法。
2.1 添加水印提示的TextBoxWatermark控件
当用户在网页中的文本输入框中输入内容时,一些文本框能够显示提示信息。当焦点落在该文本框上时,显示的提示信息又会自动消失。这就是被称为水印提示的功能,效果如图2.1所示。使用ASP.NET AJAX Control Toolkit中的TextBoxWatermark控件,就能够实现该功能。
![]()
图2.1 水印提示功能
声明TextBoxWatermark扩展器控件的语法类似如下:
<ajaxToolkit:TextBoxWatermarkExtender
ID="tweTextBox" runat="server"
TargetControlID="显示水印提示的TextBox控件的ID值"
WatermarkText="水印提示"
WatermarkCssClass="水印提示的样式" />
注意:在ASP.NET AJAX Control Toolkit程序集中,若需要使用TextBoxWatermark控件,则需要使用其全称“TextBoxWatermarkExtender”。其实,上述程序代码中已经显示了这种差别。另外,若ASP.NET AJAX Control Toolkit程序集中的其他控件也存在和TextBoxWatermark控件类似的情况时,将不再做特殊说明。
另外,TextBoxWatermark控件包含3个常用的属性:TargetControlID、WatermarkCssClass和WatermarkText。具体说明如表2.1所示。
WatermarkText属性指定TextBox控件(TextBoxWatermark控件的TargetControlID属性指定的控件)的水印提示。若要在TextBox控件中显示水印提示“请输入用户名称”,则只要把TextBoxWatermark控件的WatermarkText属性的值设置为“请输入用户名称”即可。
表2.1 TextBoxWatermark控件的常用属性及其说明
|
属 性 |
说 明 |
|
TargetControlID |
使用该控件的ASP.NET服务器端控件的ID值 |
|
WatermarkText |
水印提示 |
|
WatermarkCssClass |
水印提示的样式 |
在下述代码实例中,WaterMark.aspx页面演示了为TextBox控件添加水印提示的功能。TextBox控件的ID属性的值为tbInput,TextBoxWatermarkExtender控件的ID属性的值为tweInput。tweInput控件为tbInput控件显示水印提示信息“请输入数据……”。
<!-- AjaxTextInput/WaterMark.aspx页面 -->
<%@ Page Language="C#" StylesheetTheme="ASPNETAjaxWeb"%>
<head runat="server"><title>添加水印提示</title></head>
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager><br />
<asp:TextBox ID="tbInput" runat="server" SkinID="tbSkin"
Width="300px"></asp:TextBox>
<ajaxToolkit:TextBoxWatermarkExtender ID="tweInput" runat="server"
TargetControlID="tbInput" WatermarkText="请输入数据……"
WatermarkCssClass="Watermark">
</ajaxToolkit:TextBoxWatermarkExtender>
上述代码实例的执行结果如图2.2所示。

图2.2 演示水印提示的功能
另外,tweInput控件还设置了水印提示的样式(即WatermarkCssClass属性的值)为“Watermark”。该样式定义了水印提示的背景颜色和文本颜色,其程序代码如下。
.Watermark
{
background-color:Gray;
color:#666666;
}





