【问题标题】:asp.net compare validator date sundayasp.net 比较验证器日期星期日
【发布时间】:2011-12-09 06:39:22
【问题描述】:

我正在使用 asp.net 和 c# 开发一个 Web 应用程序。我的页面中有一个文本框,它输入一个简单的日期。我已经使用 CompareValidator 来验证这个文本框,但是当用户输入一个特定的日期(10 月的第 3 个星期日,例如:10/16/2011 或 10/17/2010 或 10/18/2009)时,比较验证器说它是失效日期。有人知道它发生了什么吗?

我的比较验证器:

<asp:CompareValidator ID="cvDataProtocolo" runat="server" 
     ControlToValidate="txtDataProtocolo" Display="Dynamic" 
     ErrorMessage="Data Inválida" 
     SetFocusOnError="True" Type="Date" Operator="DataTypeCheck" 
     ValidationGroup="vProtocolo"></asp:CompareValidator>

编辑-----

是的,我写 10/16/2011 只是为了理解,我的文化设置为 pt-BR(巴西葡萄牙语),在巴西,我们使用 dd/MM/yyyy 格式,并且 CompareValidator 在 16/10/ 无效2011(格式为 dd/MM/yyyy)作为有效格式。我已经在我的网络表单中设置了我的文化:

protected override void InitializeCulture() {
    Page.Culture = CultureInfo.GetCultureInfoByIetfLanguageTag("pt-BR").ToString();
    Page.UICulture = CultureInfo.GetCultureInfoByIetfLanguageTag("pt-BR").ToString();

    System.Threading.Thread.CurrentThread.CurrentCulture = New CultureInfo("pt-BR");
    System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("pt-BR");
}

谢谢

【问题讨论】:

  • 可能验证者使用不同的日期格式...
  • @Max:但这不仅会在日期值很少的情况下失败,而且会在所有日期值上失败。

标签: c# asp.net validation datetime


【解决方案1】:

确保您已正确设置您的文化,例如(例如)在英国,2011 年 10 月 16 日表示第 16 个月的第 10 天,这将是无效的日期。

更多信息请看这里:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

【讨论】:

  • 那么,哪些日期有效?只是您在帖子中提到的三个日期,还是更多? 2011 年 1 月 1 日是否有效?
【解决方案2】:

CompareValidator 使用当前线程的 CultureInfo 来获取您的日期格式。如果您想使用特定的 colture 和日期格式,请将此声明添加到您的页面:

<%@ Page culture="your culture" %> 

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多