asp:MaskedEditExtender停止验证器工作

时间:2012-05-16 19:24:14

标签: asp.net validation ajaxcontroltoolkit

我有一个RequiredFieldValidator。代码如下:

 <asp:TextBox runat="server" ID="phone" MaxLength="10" Columns="10" 
                            Width="90px"></asp:TextBox>
                        <asp:MaskedEditExtender ID="phone_MaskedEditExtender" runat="server" CultureAMPMPlaceholder=""
                            CultureCurrencySymbolPlaceholder="" CultureDateFormat="" CultureDatePlaceholder=""
                            CultureDecimalPlaceholder="" CultureThousandsPlaceholder="" CultureTimePlaceholder=""
                            Enabled="True" TargetControlID="phone" Mask="(999)999-9999" ClearMaskOnLostFocus="False">
                        </asp:MaskedEditExtender>
                        <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidatorPhone" ControlToValidate="phone"
                            ErrorMessage="Phone is required." Display="Dynamic" InitialValue=""  />

如果我删除了asp:MaskedEditExtender,则RequiredFieldValidator按预期运行。否则,验证器似乎失去了它的功能。

为什么呢? 感谢。

2 个答案:

答案 0 :(得分:0)

你的MaskedEditExtender没有做任何事情,只是声明一个掩码,并将自己置于输入值的位置。

如果是电话号码,则不需要所有这些文化。

什么是验证表达式?

MaskedExtender的重点是控制输入类型。如果您使用ASP,则可以通过从数据库中提取并限制字段的最大长度来完成此操作。

这是一个例子。

<cc1:MaskedEditExtender  ID="MaskedEditExtender1" 
                     runat="server"
                     TargetControlID="txtClientLookupValue"
                     Mask="999999-9999"
                     ClearMaskOnLostFocus="false"> 
</cc1:MaskedEditExtender>

<cc1:MaskedEditValidator ID="MaskedEditValidator1" 
                     ControlExtender="MaskedEditExtender1"
                     runat="server"
                     ControlToValidate="txtClientLookupValue"
                     IsValidEmpty="True" 
                     InvalidValueMessage="INVALID"
                     ValidationExpression="^[2-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$"
                     Display="Dynamic">    
</cc1:MaskedEditValidator>

这是一个参考:

MaskedEditExtenderLinkASP

祝你好运。

答案 1 :(得分:0)

以下是我在ASP.NET中进行电话号码的方式(掩码和验证)。只是想帮忙!

            <div>
                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>


                <asp:TextBox ID="txb_HomePhoneNumb"
                    Cssclass="BoxStyleHireAppCityStateZip" runat="server"
                    Width="175" MaxLength="12">
                </asp:TextBox>

                <%--MaskedEditExtender Created with: ASP.NET AJAX Control
                   Toolkit: https://ajaxcontroltoolkit.codeplex.com--%>

                <cc1:MaskedEditExtender ID="MaskedEditExtenderHomePhoneNumb"
                   runat="server" 
                   TargetControlID="txb_HomePhoneNumb"
                   ClearMaskOnLostFocus ="false"
                   MaskType="None"
                   Mask="(999) 999-9999" 
                   MessageValidatorTip="true"
                   InputDirection="LeftToRight"
                   ErrorTooltipEnabled="True"
                />

                <asp:RegularExpressionValidator runat="server"
                     ControlToValidate="txb_HomePhoneNumb" style="color:red;"
                     CssClass="display-next"
                     ErrorMessage="*Not a valid phone number!"
                     ValidationExpression="^\D?(\d{3})\D?\D?(\d{3})\D?
                                               (\d{4})$" Font-Size="Medium">
                </asp:RegularExpressionValidator>
            </div>