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

时间:2013-07-19 10:02:37

标签: c# asp.net customvalidator comparevalidator

我的搜索表单有两个字段:日期和对象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天后)开始设置的。

我不想运行日期验证,当Object id字段不为空时(允许搜索没有日期限制)。没有使用CustomValidator的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

检查一下。可以帮助你:

if(!string.IsNullOrEmpty(Objectid.Text))
 cv.ValueToCompare=DateTime.Now.AddDays(1);
else
 cv.ValueToCompare=DateTime.Now.AddDays(-10);

答案 1 :(得分:0)

只需在代码隐藏文件中将“已启用”属性设置为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。您还可以将“Visible”属性设置为false作为第二个选项。查看MSDN here