除非我使用验证摘要,否则CustomValidator不会显示消息

时间:2017-12-04 14:47:25

标签: asp.net webforms

如果提供的日期无效,我想输出一条消息。

<asp:TextBox ID="RegistrationFromTextBox2" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" ControlToValidate="RegistrationFromTextBox2" OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="NewMailingItem" runat="server" ErrorMessage="The date is invalid"></asp:CustomValidator>

      protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            DateTime temp;
            if (DateTime.TryParse(args.Value, out temp))
            {
                args.IsValid =true;
            }
            else
            {
                args.IsValid = false;
            }

        }

        catch (Exception ex)
        {

            args.IsValid = false;

        }
    }

我希望输出消息位于字段附近。

相反,即使功能正常,我也没有得到任何回应。如果我将验证摘要添加到表单中,我只会收到错误消息。

没有验证摘要会显示消息吗?

1 个答案:

答案 0 :(得分:0)

  

没有验证摘要会显示消息吗?

您需要使用Text属性而不是ErrorMessage

<asp:CustomValidator ID="CustomValidator1" 
   ControlToValidate="RegistrationFromTextBox2" 
   OnServerValidate="CustomValidator1_ServerValidate" 
   ValidationGroup="NewMailingItem" 
   runat="server"
   Text="The date is invalid">
</asp:CustomValidator>

仅供参考:如果您只是想验证日期,可以使用CompareValidatorAjax Control Toolkit's Calendar控件。

<asp:TextBox ID="RegistrationFromTextBox2" runat="server"
    placeholder="MM/DD/YYYY">
</asp:TextBox>
<asp:CompareValidator
    ID="RegistrationFromCompareValidator" runat="server"
    Type="Date"
    Operator="DataTypeCheck"
    ControlToValidate="RegistrationFromTextBox2"
    Text="The date is invalid">
</asp:CompareValidator>