繁体   English   中英

ASP.NET:如果某些其他字段不为空,则跳过运行CompareValidator

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM