2.8 控制并验证用户输入格式的MaskedEdit控件
在ASP.NET AJAX Control Toolkit中,MaskedEdit控件是功能非常强大的一个控件,它能够控制用户输入的字符和内容格式。如果用户输入字符或内容的格式不满足事先的设置,则控件将不会接收用户的输入。如果MaskedEdit控件设置了格式,那么它将为用户显示设置的格式,如图2.12所示。图2.12中的格式为“XXXX-XX-XX”。因此,用户只能按照该格式进行输入。
![]()
图2.12 MaskedEdit控件控制用户输入的格式
在ASP.NET AJAX Control Toolkit中,MaskedEdit控件和MaskedEditValidator控件往往一起使用。MaskedEdit控件控制用户输入的字符和内容格式,MaskedEditValidator控件验证用户输入的内容是否满足指定的内容和格式。其中,声明MaskedEdit扩展器控件的语法类似如下:
<ajaxToolkit:MaskedEditExtender
TargetControlID="TextBox控件"
Mask="能够接收的字符集合,如9,999,999.99"
MessageValidatorTip="true"
OnFocusCssClass="样式"
OnInvalidCssClass="用户输入内容不合法时的样式"
MaskType="屏蔽的类型"
InputDirection="文字的方向"
AcceptNegative="接收负号(-)的方式"
DisplayMoney="显示货币符合的方式"
ErrorTooltipEnabled="True"/>
另外,MaskedEdit控件包含多个常用属性,如TargetControlID、MaskType、Filtered、AcceptNegative、UserDateFormat、UserTimeFormat等。具体说明如表2.8所示。
表2.8 MaskedEdit控件的常用属性及其说明
|
属 性 |
说 明 |
|
TargetControlID |
使用该控件的ASP.NET服务器端控件的ID值 |
|
MaskType |
屏蔽的类型 |
|
Mask |
指定接收的字符和格式 |
|
AcceptAMPM |
是否接受“AM/PM”字符串。默认值为false |
|
AcceptNegative |
是否接受负号(-)。其值可以是None、Left或Right |
|
AutoComplete |
是否使用自动完成功能 |
|
AutoCompleteValue |
自动完成时使用的值 |
|
ClearTextOnInvalid |
当内容不合法时,是否自动清空文本 |
|
ClipboardEnabled |
是否允许粘贴或拷贝 |
|
ErrorTooltipEnabled |
是否使用错误提示功能 |
续表
|
属 性 |
说 明 |
|
Century |
默认的世纪 |
|
ClearMaskOnLostFocus |
当TextBox控件失去焦点时,是否清空屏蔽字符 |
|
ClipboardText |
剪切板的文本 |
|
DisplayMoney |
货币符号显示方式 |
|
Filtered |
合法字符集合 |
|
InputDirection |
输入文本的方向 |
|
MessageValidatorTip |
当用户输入内容时,显示的提示文本 |
|
PromptChararacter |
提示字符集合 |
|
CultureName |
文化名称 |
|
ErrorTooltipCssClass |
错误提示文本的样式 |
|
OnFocusCssClass |
当焦点落在TextBox控件上时,TextBox控件的样式 |
|
OnInvalidCssClass |
当内容不合法时,TextBox控件的样式 |
|
OnFocusCssNegative |
当焦点落在TextBox控件且内容为负值时,TextBox控件的样式 |
|
OnBlurCssNegative |
当TextBox控件失去焦点且内容为负值时,TextBox控件的样式 |
|
UserDateFormat |
日期格式 |
|
UserTimeFormat |
时间格式 |
|
CultureDateFormat |
本地化日期格式 |
|
CultureAMPMPlaceholder |
与当前页的文化相关 |
|
CultureCurrencySymbolPlaceholder |
与当前页的文化相关 |
|
CultureDatePlaceholder |
与当前页的文化相关 |
|
CultureDecimalPlaceholder |
与当前页的文化相关 |
|
CultureThousandsPlaceholder |
与当前页的文化相关 |
|
CultureTimePlaceholder |
与当前页的文化相关 |
MaskType属性指定屏蔽的类型,即验证的类型。它的值可以是以下5个值:
None,未指定验证类型。
Number,数字验证类型。
Date,日期验证类型。
Time,时间验证类型。
DateTime,日期和时间验证类型。
Mask属性指定接收的字符和格式,它的值是一个字符串,如表示日期的“9999-99-99”(年份为4位的数字,月份和日期都为2位的数字,分隔符号为“-”)、表示时间的“99:99:99”等。在Mask属性中,它可以使用通配符表示一类字符,具体说明如表2.9所示。
表2.9 Mask中的通配符及其说明
|
通 配 符 |
说 明 |
|
9 |
表示数字(0~9) |
|
L |
表示一个字母,可以大写或小写 |
|
$ |
表示一个字母或空格 |
续表
|
通 配 符 |
说 明 |
|
C |
表示一个自定义字符 |
|
A |
表示一个字母或一个自定义字符 |
|
N |
表示一个数字或一个自定义字符 |
|
? |
表示任意一个字符 |
在Mask属性中,除了使用通配符之外,还可以使用分隔符,具体说明如表2.10所示。
表2.10 Mask中的分隔符及其说明
|
通 配 符 |
说 明 |
|
/ |
日期分隔符 |
|
: |
时间分隔符 |
|
. |
小数点 |
|
, |
千位分隔符 |
|
\ |
转义字符 |
|
{ |
重复值的开始部分 |
|
} |
重复值的结束部分 |
使用表2.9中的通配符和表2.10中的分隔符可以组成多种多样的格式字符串,常用的实例如下:
“99:99:99”,表示时间字符串。
“9999-99-99”,表示日期字符串。
“999999”,表示由6个数字组成的字符串。
“9\/9”,表示由2个数字组成的中间被字符“/”分隔的字符串。
DisplayMoney属性能够指定显示货币符号(如¥、$等)的方式,具体描述如下:
None,不显示货币符号。
Left,在最左边显示货币符号。
Right,在最右边显示货币符号。
AcceptNegative属性指定能否接受负号(-),具体描述如下:
None,不显示负号。
Left,在最左边显示负号。
Right,在最右边显示负号。
InputDirection属性指定文本的方向,它的值可以为LeftToRight(表示从左到右)和RightToLeft(表示从右到左)。在下述实例代码中,MaskedEditExtender控件指定验证类型为日期类型(由MaskType属性指定),格式字符串为“9999-99-99”。因此,用户只能输入日期格式的数据。
<ajaxToolkit:MaskedEditExtender ID="meeInput" runat="server"
Mask="9999-99-99" MaskType="Date" TargetControlID="tbInput">
</ajaxToolkit:MaskedEditExtender>
在ASP.NET AJAX Control Toolkit中,MaskedEditValidator控件也是一个功能非常强大的控件,它能够验证用户输入的内容是否满足事先指定的格式。声明MaskedEditValidator控件的语法类似如下:
<ajaxToolkit:MaskedEditValidator
ControlExtender="MaskedEditExtender控件"
ControlToValidate="被验证的TextBox控件"
IsValidEmpty="False"
MaximumValue="最大值"
EmptyValueMessage="空值时的提示消息"
InvalidValueMessage="不合法时的提示消息"
MaximumValueMessage="超过最大值的提示消息"
MinimumValueMessage="超过最小值的提示消息"
MinimumValue="最小值"
EmptyValueBlurredText="*"
InvalidValueBlurredMessage="*"
MaximumValueBlurredMessage="*"
MinimumValueBlurredText="*"
Display="Dynamic"
TooltipMessage="提示消息"/>
另外,MaskedEditValidator控件包含多个常用属性,如ControlToValidate、InitialValue、ControlExtender、IsValidEmpty、MaximumValue、MinimumValue等。具体说明如表2.11所示。
表2.11 MaskedEditValidator控件的常用属性及其说明
|
属 性 |
说 明 |
|
ControlToValidate |
被验证控件的ID属性的值 |
|
ControlExtender |
与其相对应的MaskedEditExtender控件指定的TextBox控件的ID属性的值 |
|
AcceptAMPM |
是否接受“AM/PM”字符串。默认值为false |
|
InitialValue |
与其相对应的TextBox控件的初始值 |
|
IsValidEmpty |
与其相对应的TextBox控件的值为空是否合法 |
|
MaximumValue |
最大值 |
|
MinimumValue |
最小值 |
|
ValidationExpression |
验证内容的正则表达式 |
|
ClientValidationFunction |
客户端验证函数的名称 |
|
TooltipMessage |
TextBox控件具有焦点时显示的消息 |
|
EmptyValueMessage |
TextBox控件具有焦点,该控件的内容为空时显示的消息 |
|
EmptyValueBlurredText |
TextBox控件不具有焦点,该控件的内容为空时显示的消息 |
|
InvalidValueMessage |
TextBox控件具有焦点,验证不合法时显示的消息 |
|
InvalidValueBlurredMessage |
TextBox控件不具有焦点,验证不合法时显示的消息 |
|
MaximumValueMessage |
TextBox控件具有焦点,控件的内容超过最大值时显示的消息 |
|
MaximumValueBlurredMessage |
TextBox控件不具有焦点,控件的内容超过最大值时显示的消息 |
|
MinimumValueMessage |
TextBox控件具有焦点,控件的内容超过最小值时显示的消息 |
|
MinimumValueBlurredText |
TextBox控件不具有焦点,控件的内容超过最小值时显示的消息 |
在下述代码实例中,MaskedEdit.aspx页面为TextBox控件(ID属性的值为tbInput)演示了控制并验证用户输入格式的功能。MaskedEditExtender和MaskedEditValidator控件的ID属性的值分别为meeInput和mevInput。meeInput控件指定用户只能输入“9999-99-99”格式的日期,mevInput控件将验证用户输入的格式是否正确,如果不正确,则显示提示消息。
<!-- AjaxTextInput/MaskedEdit.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:MaskedEditExtender ID="meeInput" runat="server"
Mask="9999-99-99" MaskType="Date" TargetControlID="tbInput">
</ajaxToolkit:MaskedEditExtender>
<ajaxToolkit:MaskedEditValidator ID="mevInput" runat="server"
ControlToValidate="tbInput" ControlExtender="meeInput"
IsValidEmpty="false" EmptyValueMessage="日期不能为空"
InvalidValueMessage="日期的格式不正确"
TooltipMessage="请输入日期,格式为:yyyy-MM-dd"
Display="Dynamic"></ajaxToolkit:MaskedEditValidator>
上述代码实例的执行结果如图2.13所示。

图2.13 演示控制并验证用户输入格式的功能





