[英]ASP.NET: skip running CompareValidator if some other field is not empty
我的搜索表单有2个字段:日期和对象ID。 我正在使用这样的日期验证:
<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date"
ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False"
ErrorMessage="error msg" EnableClientScript="True"/>
ValueToCompare设置为隐藏代码(距现在10天)。
当“对象ID”字段不为空时,我不想运行日期验证(允许无日期限制地进行搜索)。 不使用CustomValidator的解决方案是什么?
对此进行检查。可能对您有帮助:
if(!string.IsNullOrEmpty(Objectid.Text))
cv.ValueToCompare=DateTime.Now.AddDays(1);
else
cv.ValueToCompare=DateTime.Now.AddDays(-10);
只需在“文件隐藏代码”中将“启用”属性设置为false。 验证是在Page.Load事件之后但在事件触发触发验证的按钮或控件之前执行的。
//标记部分
<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date"
ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False"
ErrorMessage="error msg" EnableClientScript="True"/>
//文件后面的代码
protected void Page_Load(object sender, EventArgs e)
{
if(!String.IsNullOrEmpty(ObjectId.Text))
{
cv.Enabled=false;
}
}
现在,当执行验证时,将跳过CompareValidator。 您还可以将“可见”属性设置为false作为第二个选项。 在此处检查MSDN。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.