This topic has not yet been rated - Rate this topic

CustomValidator.ServerValidate Event

Occurs when validation is performed on the server.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)
public event ServerValidateEventHandler ServerValidate
<asp:CustomValidator OnServerValidate="ServerValidateEventHandler" />

The ServerValidate event is raised when validation is performed on the server. This event is used to provide a custom validation routine for an input control, such as a TextBox control.

For more information about handling events, see Events and Delegates.

The following code example demonstrates how to specify and code a handler for a server-side CustomValidator control. It creates a custom validation routine, validates the value of a TextBox control for an even number, and then displays the result of the validation.

Security note Security Note

This example has a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.



<%@ Page Language="C#" AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>CustomValidator ServerValidate Example</title>
<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>    

</head>
<body>

   <form id="form1" runat="server">

      <h3>CustomValidator ServerValidate Example</h3>

      <asp:Label id="Message"  
           Text="Enter an even number:" 
           Font-Names="Verdana" 
           Font-Size="10pt" 
           runat="server"
           AssociatedControlID="Text1"/>

      <br />

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

      &nbsp;&nbsp;

      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Names="verdana" 
           Font-Size="10pt"
           OnServerValidate="ServerValidation"
           runat="server"/>

      <br />

      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

   </form>

</body>
</html>



.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
AppendDataBountItems - ListItem - Register | Labo2

Labo2

4. Voeg in de ASPX aan beide lists een hardcoded item {Kies een region{ of {Kies een territory{ toe.

    < div >    

 

        < asp : DropDownList ID ="ddlRegion" runat ="server">

        < asp : ListItem Value ="-">-- kies region--</asp:ListItem>

        </ asp : DropDownList >

 

        < asp : DropDownList ID ="ddlTerritory" runat ="server">

        < asp : ListItem Value ="-1">--kies territory--</asp:ListItem>

        </ asp : DropDownList >

   

    </ div >

5. Voeg aan de pagina default.aspx een Register directive toe die de user control registreert met tagprefix uc en tagname TerritorySelector

<% @ Register src ="wuc/wucTerritorySelector.aspx" tagname ="wucTerritory" tagprefix ="uc1" %>

6. Maak gebruik van de nieuwe tag om de usercontrol op het form te plaatsen.

    < div >

       < uc1 : wucTerritory ID ="wucTerritory1" runat ="server" />

    </ div >

2. Test uit. Wat is er gebeurt met --Kies een region{"?

3. Los het probleem op door gebruik te maken van de AppendDataBoundItems property op True te plaatsen.

6. Ook hier weet de bulleted list niet wanneer het zijn items moet verversen. Voeg aan de page load de code toe zodat bij iedere postback de bulleted list opnieuw wordt opgevuld.
!!!!
ServerValidate - Validation - FillPersonTypes | Labo1

Labo1

Vang het ServerValidate event op. Controleer in dit event of er minstens 1 domein geselecteerd is in de checkboxlist. Vul op basis van de controle de gepaste waarde in de IsValid property van de ServerValidateEventArgs.

    Protected Sub cvDomeinen_ServerValidate(ByVal source AsObject, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvDomeinen.ServerValidate

        Dim isOK AsBoolean = False

 

        For Each cbl AsListItemIn cblVakken.Items

            If cbl.Selected Then

                isOK = True

            End If

        Next

        If Not isOK Then

            args.IsValid = False

        End If

 

    End Sub

Het laatste veld in onze usersettings form was het persoonstype waarbij de gebruiker kon kiezentussen: student, docent, oud-student, andere.

    Private Sub FillPersonTypes()

        ddlPersoonType.Items.Add(NewListItem("Student", "0"))

        ddlPersoonType.Items.Add(NewListItem("Oud-Student", "2"))

        ddlPersoonType.Items.Add(NewListItem("Docent", "1"))

        ddlPersoonType.Items.Add(NewListItem("Andere", "3"))

    End Sub

 

    Protected Sub cvType_ServerValidate(ByVal source AsObject, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvType.ServerValidate

        If ddlPersoonType.SelectedValue = -1 Then

            args.IsValid = False

        End If

    End Sub

Als de gebruiker op Send klikt, nog eens een validatie:

    Protected Sub btnVerzenden_Click(ByVal sender AsObject, ByVal e AsEventArgs) Handles btnVerzenden.Click

        If revMail.IsValid And rfvEmail.IsValid And rfvNaam.IsValid And cvDomeinen.IsValid And cvType.IsValid = TrueThen

            pnlSettingsDisplay.Visible = True

            pnlSettingsForm.Visible = False

            lblNameText.Text = "<b>Naam: </b>" & txtNaam.Text

            lblEmailText.Text = "<b>E-mail: </b>" & txtEmail.Text

            lblType.Text = ddlPersoonType.SelectedItem.Text

            For Each i AsListItemIn cblVakken.Items

                If i.Selected = TrueThen

                    lblVakken.Text &= "- " & i.Text & "</br>"

                End If

            Next

        End If

    End Sub


 

6. Test nu uw formulier zodat je een geldige waarde invult voor naam en email maar geen enkele waarde selecteert voor het domain. Klik op de knop btnSend en bekijkt het resultaat in uw DropDownList. Niet echt wat je verwacht niet?

7. Het Load event wordt bij iedere request opnieuw uitgevoerd maar het ASP.NET webform onthoudt blijkbaar de items in de dropdownlist bij een postback. Pas de code in het load event aan zodat het opvullen van de dropdownlist enkel gebeurd als er geen postback is. Test het voorgaande scenario opnieuw uit en controleer of de dropdownlist nu wel correct werkt.

    Protected Sub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load

        If IsPostBack = FalseThen

            FillPersonTypes()

        End If

    End Sub