RangeValidator无法在Web用户控件中工作

时间:2013-06-26 09:37:15

标签: asp.net web-user-controls rangevalidator

我正在使用ajax日历扩展器创建日历控件。在该控件中我需要验证日期和来自。因为我使用asp RangeValidator control.Calander formate设置为[MM / dd / yyyy]。

<asp:RangeValidator ID="RGvDt" runat="server" ErrorMessage="Invalid Date" 
        ForeColor="Red" Display="Dynamic" ControlToValidate="txtDate" Type="Date">
</asp:RangeValidator> 

但它不起作用。它会导致低谷错误

The value '01/31/2022' of the MaximumValue property of 'RGvDt' cannot be converted to type 'Date'.

但是这段代码在aspx页面中运行正常。任何人都可以告诉我如何将RangeValidator用于我的用户控件。如何将验证格式更改为[dd / MM / yyyy]

1 个答案:

答案 0 :(得分:0)

/在日期格式字符串中具有特殊含义。这意味着:“用你的文化日期分隔符代替我”。例如,在德国,它是.

MSDN

  

“/”自定义格式说明符表示日期分隔符   用于区分年,月和日。适当的   从中检索本地化日期分隔符   当前或指定的DateTimeFormatInfoDateSeparator属性   文化。 ...

我认为唯一的方法是使用CustomValidator来检查这种格式。然后你可以用这种方式解析日期(在服务器端):

DateTime dt;
if(DateTime.TryParseExact(txtDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    // now there is a valid date in dt
}

请注意我用CultureInfo.InvariantCulture强制/作为实际日期分隔符。