【问题标题】:Validate age restriction in ASP.NET [closed]验证 ASP.NET 中的年龄限制 [关闭]
【发布时间】:2013-03-23 16:56:59
【问题描述】:

我是 ASP.NET 新手,我想设置 RangeValidator 来验证 18 岁以上的出生日期。我已经设置了,但它不起作用。

我该如何解决?

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtDOB"
                    ErrorMessage="less than 18 " MaximumValue="01/01/1995" MinimumValue="01/01/1888"
                    SetFocusOnError="True" Type="Date" Style="color: #FF0000;"></asp:RangeValidator> 

【问题讨论】:

标签: asp.net validation


【解决方案1】:

我建议您使用带有客户端 javascript 函数的 asp:CustomValidator

Custom Validator

你可以做这样的事情(注意,这是未经测试,就在我的脑海中):

<asp:CustomValidator ID="CustomValidator1" runat="server" 
    EnableClientScript="true"
    ErrorMessage="less than 18"
    ClientValidationFunction="checkDate" 
    ControlToValidate="txtDOB">
</asp:CustomValidator> 

假设日期写成这种格式“dd/MM/yyyy”

function checkDate() {
   var enteredDate=document.getElementById('<%=txtDOB.ClientID%>').value;
   var dateValues=enteredDate.split("/");
   var dateToCheck = new Date(dateValues[2], dateValues[1]-1, dateValues[0]);
   var today = new Date();
   var dateValid = new Date(today.getFullYear()-18, today.getMonth()-1, today.getDate());
   if (dateToCheck < dateValid) {
     args.IsValid = false;
   }
   else {
     args.IsValid = true;
   }
}

注意

  1. javascript 在 1 月使用 0,因此在该月使用 -1。
  2. 您应该在自定义验证器中添加一个 ServerValidation 函数,以防 javascript 被禁用。

【讨论】:

  • 关于第2点,他不能在服务器端检查Page.IsValid()吗?
  • @ShaiCohen 他也需要服务器端的自定义代码。
  • @MikeSmithDev:你确定吗?据我了解,'Page.Validate()' 后跟 Page.IsValid 是对任何和所有验证服务器控件的服务器端验证。来自 MSDN:**要使此属性返回 true,当前验证组中的所有验证服务器控件都必须验证成功。 ** 我错过了什么吗?
  • @ShaiCohen 是的...因为您必须为自定义验证器指定OnServerValidate 函数...。您认为验证码还会来自哪里?
  • @MikeSmithDev:谢谢你教我一些新东西。我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多