7

我们如何在 asp.net 上使用数据验证?不能插入大于当前日期的日期。

4

4 回答 4

2

使用CompareValidator。大多数人使用它来比较输入到两个文本框中的两个值,但您也可以使用它来比较一个输入值和一个设置值,就像您的情况一样。

  <asp:CompareValidator id="Compare1" 
       ControlToValidate="TextBox1"
       Type="Date"
       runat="server"/>

在 setCompare1.ValueToCompare = new DateTime(...);和后面的代码中Compare1.Operator = ValidationCompareOperator.LessThanEqual;

另外,请记住:您应该始终在服务器和客户端上进行验证,因为客户端验证很容易关闭或绕过。我建议您为此查看Fluent 验证

于 2010-07-12T07:35:17.383 回答
1

使用CustomValidator将轻松解决您的问题。

自定义验证器

或者

您可以使用 javascript 来验证您的日期,如下所示

var myDate=new Date();
myDate.setFullYear(2010,0,14);
var today = new Date();

if (myDate>today)
  {
  alert("Today is before 14th January 2010");
  }
else
  {
  alert("Today is after 14th January 2010");
  }
于 2010-07-12T07:16:56.550 回答
1

在javascript解决方案中,

如果您只想比较日期(即日、月和年),请确保将小时、分钟、秒和毫秒设置为 0。实现上述功能的功能如下,

function f_tcalResetTime (d_date) {
    d_date.setHours(0);
    d_date.setMinutes(0);
    d_date.setSeconds(0);
    d_date.setMilliseconds(0);
    return d_date;
}

如果比较日期,javascript 实际上会在后台调用 date.valueOf 函数,该函数返回自 1970 年 1 月 1 日午夜以来经过的毫秒数。

于 2010-07-12T13:50:34.190 回答
0

好约会伙伴。有很多可用的选项。您可以使用 asp.net 的自定义验证器控件、javascript 等。更好的选择是使用 AJAX 控件工具包的屏蔽编辑扩展器和屏蔽编辑验证器。您可以指定范围、自定义掩码 (yyyy/MM/dd) 甚至是空字段消息。

只需确保正确设置网站文化,以便正确验证日期。 http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/MaskedEdit/MaskedEdit.aspx

干杯。

<ajaxToolkit:MaskedEditValidator
ControlExtender="MaskedEditExtender2"
ControlToValidate="TextBox2" 
IsValidEmpty="False" 
MaximumValue="12000" 
EmptyValueMessage="Number is required"
InvalidValueMessage="Number is invalid"
MaximumValueMessage="Number > 12000"
MinimumValueMessage="Number < -100"
MinimumValue="-100" 
EmptyValueBlurredText="*" 
InvalidValueBlurredMessage="*" 
MaximumValueBlurredMessage="*" 
MinimumValueBlurredText="*"
Display="Dynamic" 
TooltipMessage="Input a number: -100 up to 12.000"/>
于 2010-07-12T14:11:15.897 回答