1

我的搜索表单有 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 的解决方案是什么?

4

2 回答 2

0

检查this.may这对你有帮助:

if(!string.IsNullOrEmpty(Objectid.Text))
 cv.ValueToCompare=DateTime.Now.AddDays(1);
else
 cv.ValueToCompare=DateTime.Now.AddDays(-10);
于 2013-07-19T10:12:53.197 回答
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。您还可以将“可见”属性设置为 false 作为第二个选项。在此处查看 MSDN 。

于 2013-07-19T11:42:23.087 回答