我的搜索表单有两个字段:日期和对象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的解决方案是什么?
答案 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。