2012-03-08 37 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控制工具包。