ASP.NET中HTML Input Date控件范围与正则验证同时报错问题
解决ASP.NET中Date控件与验证控件的冲突问题
嘿,我来帮你搞定这个问题!你遇到的两个验证控件报错的情况,其实都是配置上的小疏忽,咱们一步步来修复:
问题1:RegularExpressionValidator 报错的原因
你给input type="date"加了正则验证0*[0-9]\d*,但要知道,type="date"的控件在提交时,实际传递的是**yyyy-MM-dd格式的字符串**(比如2005-08-15),里面包含横杠-,你的正则只允许数字,所以哪怕输入正确日期,这个验证也会触发错误。
更关键的是:type="date"控件本身就会限制用户只能选择/输入合法的日期格式,根本不需要额外加正则验证数字。所以直接把这个RegularExpressionValidator删掉就好啦。
问题2:RangeValidator 报错的原因
你在RangeValidator的MaximumValue和MinimumValue里直接写了C#代码DateTime.Now.Date.Value.ToString(yyyy-MM-dd),这是不对的——ASP.NET服务器控件的属性不能直接这样内嵌C#代码,得用服务器端绑定表达式,或者在后台代码里赋值。
另外,日期格式要和date控件的输出格式保持一致,也就是yyyy-MM-dd。
修改后的完整代码
<div class="form-group"> <h5>Date of Birth:</h5> <div class="controls "> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-calendar"></i></span> <input type="date" name="bday" class="form-control" id="dateofbirth" runat="server"> </div> <span style="color:red;"> <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Please Enter Date Of Birth" ControlToValidate="dateofbirth" SetFocusOnError="True"> </asp:RequiredFieldValidator> </span> <span style="color:red;"> <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="You are not eligible " ControlToValidate="dateofbirth" Type="Date" MaximumValue="<%= DateTime.Now.Date.ToString("yyyy-MM-dd") %>" MinimumValue="<%= DateTime.Now.AddYears(-18).Date.ToString("yyyy-MM-dd") %>"> </asp:RangeValidator> </span> </div> </div>
这里要注意几个关键点:
- 给
RangeValidator加上了Type="Date",告诉控件要按日期类型验证,而不是字符串 - 用
<%= %>绑定表达式来获取格式化后的日期字符串,确保格式是yyyy-MM-dd - 移除了多余的
RegularExpressionValidator
可选:后台代码赋值的方式
如果你不想在前端用绑定表达式,也可以在后台的Page_Load事件里设置范围值:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { RangeValidator1.MaximumValue = DateTime.Now.Date.ToString("yyyy-MM-dd"); RangeValidator1.MinimumValue = DateTime.Now.AddYears(-18).Date.ToString("yyyy-MM-dd"); RangeValidator1.Type = ValidationDataType.Date; } }
这样修改后,验证就能正常工作啦——只有当用户没填日期,或者填的日期不在18年前到今天的范围内时,才会触发对应的错误提示。
内容的提问来源于stack exchange,提问作者Abdul Kabeer
相关产品推荐
相关产品推荐

