2012-03-08 39 views
3

我们有一个文本框,用户可以在其中输入日期。唯一有效的日期是MM/dd/yyyy。经历了所有的麻烦后,我认为MaskedEditExtender是最好的选择。但是我使用它有一些问题。以下是我的ASPX代码,如何使用某些日期格式的Ajax MaskedEdit?

<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. 我应该使用CompareValidator还是MaskedEditValidator?因为我想确保像02/29/2011那样的日期无效。

回答

2

您的代码是正确的。我自己尝试,一切都很完美。

因此,我建议您在单独的项目解决方案上尝试此代码以查看是否存在任何其他问题。

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

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

<ajaxToolkit:MaskedEditValidator ID="MV_Date" runat="server" ControlToValidate="TextBox1" 
      ControlExtender="TextBox1_MaskedEditExtender" InvalidValueMessage="Invalid Date" 
      IsValidEmpty="False" /> 
+0

MaskedEditValidator或CompareValidator之间有什么不同? – GLP 2012-03-09 14:55:55

+0

正如我之前写的,应该使用CompareValidator来比较一个输入控件的值与另一个输入控件的值或固定值,并且MaskedEditValidator将验证输入文本是否与MaskedEdit扩展器中指定的模式相匹配。所以对于你的问题,你应该使用MaskedEditValidator来确定日期是否正确。 – Koste 2012-03-09 15:00:47

0

您的代码完美的作品。只需添加最新版本的Ajax控制工具包。