Condividi tramite


Definizione di gruppi di convalida

Aggiornamento: novembre 2007

I gruppi di convalida consentono di organizzare controlli di convalida su una pagina come un insieme. Ogni gruppo può eseguire la convalida in modo indipendente dagli altri gruppi nella pagina.

Per creare un gruppo di convalida, impostare la proprietà ValidationGroup sullo stesso nome (una stringa) per tutti i controlli da raggruppare. A un gruppo di convalida è possibile assegnare qualsiasi nome, ma è necessario utilizzare lo stesso nome per tutti i membri del gruppo.

Durante il postback la proprietà IsValid della classe Page viene impostata solo in base ai controlli di convalida nel gruppo di convalida corrente. Il gruppo di convalida corrente è determinato dal controllo che ha generato la convalida. Se, ad esempio, si fa clic su un controllo pulsante appartenente al gruppo di convalida LoginForm, la proprietà IsValid restituirà true se sono validi tutti i controlli di convalida la cui proprietà ValidationGroup è impostata su LoginForm. La convalida può essere attivata anche da altri controlli, ad esempio il controllo DropDownList, se la proprietà CausesValidation del controllo è impostata su true e la proprietà AutoPostBack è impostata su true.

Per eseguire la convalida a livello di codice, è possibile chiamare l'overload del metodo Validate che utilizza il parametro validationGroup per forzare la convalida solo per il gruppo di convalida. Quando si chiama il metodo Validate, la proprietà IsValid riflette la validità di tutti i gruppi convalidati fino a quel momento, sia dei gruppi convalidati a seguito di un postback sia di quelli convalidati a livello di codice. Se un controllo in un gruppo non è valido, la proprietà IsValid restituisce false.

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare la proprietà ValidationGroup per specificare i controlli da convalidare quando un controllo Button esegue il postback al server. La pagina contiene tre caselle dei testo per catturare i dati immessi dall'utente e tre controlli RequiredFieldValidator per verificare che l'utente non lasci alcuna casella di testo vuota. I controlli RequiredFieldValidator per le prime due caselle di testo appartengono al gruppo di convalida PersonalInfoGroup e il controllo RequiredFieldValidator per la terza casella di testo al gruppo di convalida LocationInfoGroup. Quando si fa clic su Button1, vengono convalidati solo i controlli nel gruppo di convalida PersonalInfoGroup. Quando si fa clic su Button2, viene convalidato solo il controllo nel gruppo di convalida LocationInfoGroup.

<%@ page language="VB" %>

<!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>Button.ValidationGroup Example</title>
</head>
<body>
  <form id="form1" >

    <h3>Button.ValidationGroup Example</h3>

    <asp:label id="NameLabel" 
      text="Enter your name:"
      runat="Server"
      AssociatedControlID="NameTextBox">
    </asp:label>

    &nbsp

    <asp:textbox id="NameTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator1"
      controltovalidate="NameTextBox"
      validationgroup="PersonalInfoGroup"
      errormessage="Enter your name."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <asp:label id="AgeLabel" 
      text="Enter your age:"
      runat="Server"
      AssociatedControlID="AgeTextbox">
    </asp:label>

    &nbsp

    <asp:textbox id="AgeTextbox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator2"
      controltovalidate="AgeTextBox"
      validationgroup="PersonalInfoGroup"
      errormessage="Enter your age."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <!--When Button1 is clicked, only validation
    controls that are a part of PersonalInfoGroup
    are validated.-->
    <asp:button id="Button1" 
      text="Validate" 
      causesvalidation="true"
      validationgroup="PersonalInfoGroup"
      runat="Server" />

    <br /><br />

    <asp:label id="CityLabel" 
      text="Enter your city of residence:"
      runat="Server"
       AssociatedControlID="CityTextbox">
    </asp:label>

    &nbsp

    <asp:textbox id="CityTextbox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator3"
      controltovalidate="CityTextBox"
      validationgroup="LocationInfoGroup"
      errormessage="Enter a city name."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <!--When Button2 is clicked, only validation
    controls that are a part of LocationInfoGroup
    are validated.-->
    <asp:button id="Button2" 
      text="Validate" 
      causesvalidation="true"
      validationgroup="LocationInfoGroup"
      runat="Server" />

  </form>
</body>
</html>
<%@ page language="C#" %>

<!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 id="head1" >
  <title>Button.ValidationGroup Example</title>
</head>
<body>
  <form id="form1" >

    <h3>Button.ValidationGroup Example</h3>

    <asp:label id="NameLabel" 
      text="Enter your name:"
      runat="Server"
      AssociatedControlID="NameTextBox">
    </asp:label>

    &nbsp

    <asp:textbox id="NameTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator1"
      controltovalidate="NameTextBox"
      validationgroup="PersonalInfoGroup"
      errormessage="Enter your name."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <asp:label id="AgeLabel" 
      text="Enter your age:"
      runat="Server" 
      AssociatedControlID="AgeTextBox">
    </asp:label>

    &nbsp

    <asp:textbox id="AgeTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator2"
      controltovalidate="AgeTextBox"
      validationgroup="PersonalInfoGroup"
      errormessage="Enter your age."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <!--When Button1 is clicked, only validation
    controls that are a part of PersonalInfoGroup
    are validated.-->
    <asp:button id="Button1" 
      text="Validate" 
      causesvalidation="true"
      validationgroup="PersonalInfoGroup"
      runat="Server" />

    <br /><br />

    <asp:label id="CityLabel" 
      text="Enter your city of residence:"
      runat="Server" 
      AssociatedControlID="CityTextBox">
    </asp:label>

    &nbsp

    <asp:textbox id="CityTextBox" 
      runat="Server">
    </asp:textbox>

    &nbsp

    <asp:requiredfieldvalidator id="RequiredFieldValidator3"
      controltovalidate="CityTextBox"
      validationgroup="LocationInfoGroup"
      errormessage="Enter a city name."
      runat="Server">
    </asp:requiredfieldvalidator>

    <br /><br />

    <!--When Button2 is clicked, only validation
    controls that are a part of LocationInfoGroup
    are validated.-->
    <asp:button id="Button2" 
      text="Validate" 
      causesvalidation="true"
      validationgroup="LocationInfoGroup"
      runat="Server" />

  </form>
</body>
</html>

Vedere anche

Altre risorse

Convalida dei controlli ASP.NET