E' uno dei controlli di validazione presenti gia in ASP.NET 1.x, ed esteso nella versione 2.0, che permette di controllare il valore inserito in due campi, o il valore inserito in un singolo campo o con un valore predefinito o con un tipo di dato.
E' utilissimo per esempio, per controllare che l'utente re-inserisca correttamente la password scelta:
Insert password<br />
<asp:TextBox ID="txtPassword1" runat="server" TextMode="Password"></asp:TextBox><br />
<br />
Repeat password:<br />
<asp:TextBox ID="txtPassword2" runat="server" TextMode="Password"></asp:TextBox>
<br /><br />
<asp:Button ID="btnFirstCheck" runat="server" Text="Check password" ValidationGroup="FirstCheck" />
<br />
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="txtPassword2"
ControlToValidate="txtPassword1"
ErrorMessage="The two fields must be equals"
ValidationGroup="FirstCheck" />
Nell'esempio si nota che tramite le proprietà ControlToCompare e ControlToValidate, il validator controllare che i valori inseriti all'interno di quelle due textbox siano uguali. Il termine di confronto è dato dall'attributo Operator, che di default è settato su "Equal".
Un secondo utilizzo può essere invece quello di controllare che il valore inserito all'interno della textbox, sia una data valida.
Insert valid date<br />
<asp:TextBox ID="txtDate" runat="server"></asp:TextBox><br />
<br />
<asp:Button ID="btnSecondCheck" runat="server" Text="Check date" ValidationGroup="SecondCheck" />
<asp:CompareValidator ID="CompareValidator2" runat="server"
ControlToValidate="txtDate"
ErrorMessage="Invalid date"
Operator="DataTypeCheck"
Type="Date"
ValidationGroup="SecondCheck" />
E' possibile effettuare questo controllo grazie alla proprietà Operator, che se settata su DataTypeCheck, dice al controllo CompareValidator di non considerare la proprietà ControlToCompare e controllare invece che il dato inserito sia del tipo specificato attraverso la proprietà Type.
Oltre a questi due semplici esempi, è possibile fare altri tipi di confronti, scegliendo il valore della proprietà Operator, tra uno di questi:
DataTypeCheck
Equal
GreaterThan
GreaterThanEqual
LessThan
LessThanEqual
NotEqual