3

我们有一个文本框,用户可以在其中输入日期。唯一允许的有效日期是MM/dd/yyyy。历尽千辛万苦,我觉得MaskedEditExtender是最好的选择。但是我在使用它时遇到了一些问题。以下是我的 ASPX 代码,

<div>
    Date: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
        CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
        CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
        CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
        Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1">
    </asp:MaskedEditExtender>
    <asp:CalendarExtender ID="TextBox1_CalendarExtender" runat="server" 
        Enabled="True" TargetControlID="TextBox1" Format="MM/dd/yyyy">
    </asp:CalendarExtender>         
</div>

以下是我的问题:

  1. 添加后MaskedEditExtender,当我从日历中选择日期时,它不会写入文本框。
  2. 当我在文本框中输入某个日期时,它将变为 01-01-2011,而不是 01/01/2011,这正是我想要的。
  3. 我应该使用CompareValidatororMaskedEditValidator吗?因为我想确保像 02/29/2011 这样的日期无效。
4

2 回答 2

2

你的代码是正确的。我自己试了一下,一切都很完美。

因此,我建议您在单独的项目解决方案中尝试此代码,看看是否还有其他问题。

关于第三个问题,如果您需要验证插入的日期,可能需要使用 MaskedEditValidator。例如,如果您需要比较某些日期,您应该使用 CompareValidator。

这是使用 MaskedEditValidator 的一个很好的例子:

<ajaxToolkit:MaskedEditValidator ID="MV_Date" runat="server" ControlToValidate="TextBox1"
            ControlExtender="TextBox1_MaskedEditExtender" InvalidValueMessage="Invalid Date"
            IsValidEmpty="False" />
于 2012-03-08T23:16:08.457 回答
0

您的代码完美运行。只需添加最新版本的 ajax 控件工具包。

于 2012-03-09T05:50:16.863 回答