webform CustomValidator OnServerValidate method ClientValidationFunction property ErrorMessage Property Text Property Display Property    扩展阅读 Remarks Button的客户端验证

https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.customvalidator?view=netframework-4.8

官方的demo使用的是ControlToValidate来关联被检查的控件。

  

通过OnServerValidatef方法来进行服务端的验证。

Raises the ServerValidate event for the CustomValidator control.

Remarks

The ServerValidate event is raised when validation is performed on the server.

Raising an event invokes the event handler through a delegate. For more information, see Handling and Raising Events.

The OnServerValidate method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.

Notes to Inheritors

When overriding OnServerValidate(String) in a derived class, be sure to call the base class's OnServerValidate(String) method so that registered delegates receive the event.

Example

<asp:TextBox  
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator 
           ControlToValidate="Text1"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Names="verdana" 
           Font-Size="10pt"
           OnServerValidate="ServerValidation"
           runat="server"/>
ServerValidation的实现,这段代码,可以直接写在后台的.cs文件中
<script runat="server">

      void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 

         // Display whether the page passed validation.
         if (Page.IsValid) 
         {

            Message.Text = "Page is valid.";

         }

         else 
         {

            Message.Text = "Page is not valid!";

         }

      }

      void ServerValidation(object source, ServerValidateEventArgs args)
      {

         try 
         {

            // Test whether the value entered into the text box is even.
            int i = int.Parse(args.Value);
            args.IsValid = ((i%2) == 0);

         }

         catch(Exception ex)
         {

            args.IsValid = false;

         }

      }

   </script>    

另外还可以设定ValidationGroup来处理,让目标control和validator绑定为相同的group。

ClientValidationFunction property

Gets or sets the name of the custom client-side script function used for validation.

Remarks

Set this property to the name of the function that performs the client-side validation.

Because the client validation function runs on the target browser, the function must be written using a scripting language supported by the browser, such as JScript or VBScript.

This property cannot be set by themes or style sheet themes. For more information, see ThemeableAttribute and ASP.NET Themes and Skins.

Example

  <asp:TextBox id="Text1" 
           runat="server" />
    
      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
ClientValidate的逻辑
<script language="javascript"> 
   function ClientValidate(source, arguments)
   {
        if (arguments.Value % 2 == 0 ){
            arguments.IsValid = true;
        } else {
            arguments.IsValid = false;
        }
   }
</script>

ErrorMessage Property

Gets or sets the text for the error message displayed in a ValidationSummary control when validation fails.

The error message displayed in a ValidationSummary control when validation fails. The default value is an empty string (""), which indicates that this property is not set.

Remarks

When using a ValidationSummary control, use the ErrorMessage property to specify the text to display in the ValidationSummary control when validation fails for the current validation control.

To specify the text to display in the validation control itself, use the Text property.  

Note

If you set the ErrorMessage property without setting the Text property, the value of the ErrorMessage property is also displayed in the validation control.  

The value of this property, when set, can be saved automatically to a resource file by using a designer tool. For more information, see LocalizableAttribute and ASP.NET Globalization and Localization.

Text Property

Gets or sets the text displayed in the validation control when validation fails.

The text displayed in the validation control when validation fails. The default is an empty string (""), which indicates that this property is not set.

Remarks

Use the Text property to specify the text to display in a validation control when validation fails. You can also display a summary of all controls that fail validation in the page by using a ValidationSummary control. To specify the text to display in a ValidationSummary control, use the ErrorMessage property.  

Display Property   

Gets or sets the display behavior of the error message in a validation control.

One of the ValidatorDisplay values. The default value is Static.

https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.validatordisplay?view=netframework-4.8

Dynamic 2

Validator content dynamically added to the page when validation fails.

None 0

Validator content never displayed inline.

Static 1

Validator content physically part of the page layout.

The ValidatorDisplay enumeration represents the different display behaviors of error messages in validation controls.

None specifies that you only want to display the error message in a ValidationSummary control. The error message will not display in the validation control.

Static specifies that you don't want the layout of the Web page to change when validator controls display error messages. Space on the page is allocated for the error messages when displaying the page. The validator contents are physically part of the page; therefore, multiple validators for the same input control must occupy different locations on the page.

Dynamic specifies that you want to dynamically place error messages on the Web page when validation fails. Space for the validation content is not allocated on the page; therefore, the page dynamically changes to display the error message. This allows multiple validators to share the same physical location on the page. In order to keep the page layout from changing when an error message is displayed, the HTML element containing the validator must be sized large enough to accommodate the maximum size of the validator.  

扩展阅读

https://www.c-sharpcorner.com/UploadFile/manas1/displaying-dynamic-error-message-in-Asp-Net-custom-validator/ 

Remarks

Use the CustomValidator control to provide a user-defined validation function for an input control. The CustomValidator control is a separate control from the input control it validates, which allows you to control where the validation message is displayed.

Validation controls always perform validation on the server. They also have complete client-side implementation that allows script-enabled browsers (such as Microsoft Internet Explorer 4.0 and later) to perform validation on the client. Client-side validation enhances the validation process by checking user input before it is sent to the server. This allows errors to be detected on the client before the form is submitted, thus avoiding the round trip of information necessary for server-side validation.

To create a server-side validation function, provide a handler for the ServerValidate event that performs the validation. The string from the input control to validate can be accessed by using the Value property of the ServerValidateEventArgs object passed into the event handler as a parameter. The result of the validation is then stored in the IsValid property of the ServerValidateEventArgs object.

To create a client-side validation function, first add the server-side validation function described earlier. Next, add the client-side validation script function to the ASP.NET (.aspx) page.

 

f you are using JScript, the function must be in this form:

 
function ValidationFunctionName(source, arguments)  

The source parameter is a reference to the <span> element rendered for the CustomValidator control. This allows you to programmatically control the <span> tag, such as modifying the InnerHtml attribute. The arguments parameter is an object with two properties: Value and IsValid. This parameter allows you to get the value of the control to validate and to indicate whether the value is valid based on your custom validation routine.

Use the ClientValidationFunction property to specify the name of the client-side validation script function associated with the CustomValidator control. Because the script function is executed on the client, the function must be in a language that the target browser supports, such as VBScript or JScript.

 

Button的客户端验证

https://*.com/questions/6897196/firing-both-onclientclick-and-client-side-validation-from-validation-control-on

Change OnClientClick from return isValidTracker() to if (!isValidTracker()) return false;