【问题标题】:ASP.NET: skip running CompareValidator if some other field is not emptyASP.NET:如果其他字段不为空,则跳过运行 CompareValidator
【发布时间】:2013-07-18 13:53:30
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net customvalidator comparevalidator


    【解决方案1】:

    只需在代码隐藏文件中将“启用”属性设置为 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 here

    【讨论】:

      【解决方案2】:

      检查一下。也许对你有帮助:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多