ASP.NET Tutorial/Validation/RangeValidator

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

asp:RangeValidator is converted to JavaScript code after loading in client side

   <source lang="csharp">

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="MyPage" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
       Your age:
       <asp:TextBox ID="age" runat="server" Columns="4"></asp:TextBox>
       <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="age" ErrorMessage="Age must be between 0 and 150"
           MaximumValue="150" MinimumValue="0" Type="Integer"></asp:RangeValidator>
<asp:Button ID="btnSubmit" runat="server" Text="Click Me" />
<asp:Label ID="results" runat="server"></asp:Label>
   </form>

</body> </html> File: Default.aspx.vb

Partial Class MyPage

   Inherits System.Web.UI.Page
   Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
       If Page.IsValid Then
           results.Text = "Input is valid..."
       Else
           results.Text = "Input is not valid..."
       End If
   End Sub

End Class</source>


Birthday range

   <source lang="csharp">

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Login" %> <!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" runat="server">

   <title>Simple Login Page</title>

</head> <body>

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


         Username:
<asp:TextBox id="usernameTextBox" runat="server" /> <asp:RequiredFieldValidator id="usernameReq" runat="server" ControlToValidate="usernameTextBox" ErrorMessage="Username is required!" SetFocusOnError="True" /> Password and Confirmation:
<asp:TextBox id="passwordTextBox" runat="server" TextMode="Password" /> <asp:RequiredFieldValidator id="passwordReq" runat="server" ControlToValidate="passwordTextBox" ErrorMessage="Password is required!" SetFocusOnError="True" Display="Dynamic" /> <asp:TextBox id="confirmPasswordTextBox" runat="server" TextMode="Password" /> <asp:RequiredFieldValidator id="confirmPasswordReq" runat="server" ControlToValidate="confirmPasswordTextBox" ErrorMessage="Password confirmation is required!" SetFocusOnError="True" Display="Dynamic" /> <asp:CompareValidator id="comparePasswords" runat="server" ControlToCompare="passwordTextBox" ControlToValidate="confirmPasswordTextBox" ErrorMessage="Your passwords do not match up!" Display="Dynamic" /> Birth Date:
<asp:TextBox id="birthDateTextBox" runat="server" /> <asp:RangeValidator id="birthDateRangeTest" runat="server" Type="Date" ControlToValidate="birthDateTextBox" MinimumValue="1/1/1970" MaximumValue="12/31/1979" ErrorMessage="You must"ve been born in the 1970s!" /> <asp:Button id="submitButton" runat="server" Text="Submit" OnClick="submitButton_Click" />
   </form>

</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Login : System.Web.UI.Page {

   protected void submitButton_Click(object sender, EventArgs e)
   {
       if (Page.IsValid)
       {
           submitButton.Text = "Valid";
       }
       else
       {
           submitButton.Text = "Invalid!";
       }
   }

}</source>


Manual Validation

   <source lang="csharp">

File: Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ManualValidation" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Manual Validation</title>

</head> <body>

   <form id="form1" runat="server">
       A number (1 to 10):
     <asp:TextBox id="txtValidated" runat="server"></asp:TextBox> 
     <asp:RangeValidator id="RangeValidator"  
                         runat="server" 
                         ErrorMessage="This Number Is Not In The Range" 
                         ControlToValidate="txtValidated" 
                         MaximumValue="10" 
                         MinimumValue="1" 
                         Type="Integer" 
                         EnableClientScript="False"></asp:RangeValidator>

Not validated: <asp:TextBox id="txtNotValidated" runat="server"></asp:TextBox>


<asp:Button id="cmdOK" runat="server" Text="OK" OnClick="cmdOK_Click" Width="36px"></asp:Button>

<asp:Label id="lblMessage" runat="server" EnableViewState="False"></asp:Label>
   </form>

</body> </html> File: Default.aspx.cs

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class ManualValidation : System.Web.UI.Page {

 protected void cmdOK_Click(object sender, EventArgs e)
 {
   string errorMessage = "Mistakes found:
"; bool pageIsValid = true; foreach (BaseValidator ctrl in this.Validators) { if (!ctrl.IsValid) { pageIsValid = false; errorMessage += ctrl.ErrorMessage + "
"; TextBox ctrlInput = (TextBox)this.FindControl(ctrl.ControlToValidate); errorMessage += " * Failed: "; errorMessage += ctrlInput.Text + "
"; } } if (!pageIsValid) lblMessage.Text = errorMessage; }

}</source>


RangeValidator checks whether the value falls between a minimum and maximum value

   <source lang="csharp">

You must set five properties when using this control: ControlToValidate: The ID of the form field being validated. Text: The error message. MinimumValue: The minimum value. MaximumValue: The maximum value. Type: The type of comparison.

                    Possible values are String, Integer, Double, Date, and Currency.

<%@ 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" runat="server">

   <title>Show RangeValidator</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:Label
       id="lblAge"
       Text="Age:"
       AssociatedControlID="txtAge"
       Runat="server" />
   <asp:TextBox
       id="txtAge"
       Runat="server" />
   <asp:RangeValidator
       id="reqAge"
       ControlToValidate="txtAge"
       Text="(Invalid Age)"
       MinimumValue="5"
       MaximumValue="100"
       Type="Integer"
       Runat="server" />
   <asp:Button
       id="btnSubmit"
       Text="Submit"
       Runat="server" />
   </form>

</body> </html></source>


RangeValidator for number and date

   <source lang="csharp">

<%@ 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 runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
       Enter a number between 1 and 20:
<asp:TextBox ID="txtNumber" runat="server"></asp:TextBox> <asp:RangeValidator ID="rangeNum" runat="server" ControlToValidate="txtNumber" MinimumValue="1" MaximumValue="20" Type="Integer" SetFocusOnError="true" Text="Please enter number between 1 and 20" /> Enter a valid date from 2006:
<asp:TextBox ID="txtDate" runat="server"></asp:TextBox> <asp:RangeValidator ID="rangeDate" runat="server" ControlToValidate="txtDate" CultureInvariantValues="true" MinimumValue="2006/01/01" MaximumValue="2006/12/31" Type="Date" SetFocusOnError="true" Text="Please enter a valid date from 2006" /> <asp:Button ID="btnSubmit" Text="Click this to test validation" runat="server" />
   </form>

</body> </html></source>


Set Minimum/Maximum Value, ErrorMessage, ControlToValidate, EnableClientScript for asp:RangeValidator (C#)

   <source lang="csharp">

File: Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ValidationTest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Validation Test</title>

</head> <body>

   <form id="form1" runat="server">
   A number (1 to 10):
   <asp:TextBox id="txtValidated" runat="server"></asp:TextBox>
   <asp:RangeValidator id="RangeValidator" 
                       runat="server" 
                       ErrorMessage="This Number Is Not In The Range" 
                       ControlToValidate="txtValidated" 
                       MaximumValue="10" 
                       MinimumValue="1" 
                       Type="Integer" 
                       EnableClientScript="False"></asp:RangeValidator> 
   Not validated:
   <asp:TextBox id="txtNotValidated" runat="server"></asp:TextBox>
<asp:Button id="cmdOK" runat="server" Text="OK" OnClick="cmdOK_Click" Width="46px"></asp:Button>
<asp:Label id="lblMessage" runat="server" EnableViewState="False" Font-Bold="True" ForeColor="Red"></asp:Label> 
   </form>

</body> </html>

File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class ValidationTest : System.Web.UI.Page {

 protected void cmdOK_Click(object sender, EventArgs e)
 {
   if (!Page.IsValid) return;
   lblMessage.Text = "cmdOK_Click event handler executed.";
 }

}</source>


Use asp:RangeValidator to check the value range in an asp:textbox

   <source lang="csharp">

<html><body>

  <form runat="server">
     <asp:Label id="lblMessage" runat="server" />
<asp:Panel id="Panel1" runat="server">
City, State, ZIP (5-digit):
              <asp:TextBox id="tbCity" 
                 runat="server" />,
              <asp:TextBox id="tbState" runat="server" size=2 /> 
              <asp:TextBox id="tbZIP" runat="server" size=5 />
<asp:RegularExpressionValidator runat="server" ControlToValidate="tbZIP" ValidationExpression="[0-9]{5}" ErrorMessage="That is not a valid ZIP" />
<asp:RangeValidator runat="server" ControlToValidate="tbZIP" MinimumValue="00000" MaximumValue="22222" Type="String" ErrorMessage="You don"t live in the correct region" />
              <asp:Button id="Submit" runat="server" 
                 text="Add" />
     </asp:Panel>
  </form>

</body></html></source>


Using the RangeValidator control to test an integer value

   <source lang="csharp">

<%@ Page Language="VB" %> <script runat="server">

   Protected Sub Button1_Click(sender As Object, e As EventArgs)
      Label1.Text = "Passwords match"
   End Sub

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>CompareFieldValidator</title>

</head> <body>

   <form id="Form1" runat="server">
       Age:
       <asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
          
       <asp:RangeValidator ID="RangeValidator1" 
                           Runat="server"
                           ControlToValidate="TextBox1" 
                           Type="Integer"
                           ErrorMessage="You must be between 30 and 40"
                           MaximumValue="40" 
                           MinimumValue="30"></asp:RangeValidator>
       
           <asp:Button ID="Button1" OnClick="Button1_Click" 
            Runat="server" Text="Login"></asp:Button>
       
       
           <asp:Label ID="Label1" Runat="server"></asp:Label>
       
   </form>

</body> </html></source>


Using the RangeValidator control to test a string date value (C#)

   <source lang="csharp">

<%@ Page Language="C#" %> <script runat="server">

   protected void Page_Load(object sender, EventArgs e)
   {
       RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();
       RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
   }
   protected void Calendar1_SelectionChanged(object sender, EventArgs e)
   {
       TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
   }
   protected void Button1_Click(object sender, EventArgs e)
   {
       if (Page.IsValid) 
       {
           Label1.Text = "You are set to arrive on: " + TextBox1.Text.ToString();
       }
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>Date Validation Check</title>

</head> <body>

   <form id="form1" runat="server">
       Arrival Date:
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
       <asp:RangeValidator ID="RangeValidator1" 
                           runat="server" 
                           ErrorMessage="select a date within the next two weeks." 
                           ControlToValidate="TextBox1" Type="Date"></asp:RangeValidator>

Select your arrival date:
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label> </form>

</body> </html></source>


Using the RangeValidator control to test a string date value (VB.net)

   <source lang="csharp">

<%@ Page Language="VB" %> <script runat="server">

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
       RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString()
       RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString()
   End Sub
   
   Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, _
     ByVal e As System.EventArgs)
       TextBox1.Text = Calendar1.SelectedDate.ToShortDateString()
   End Sub
   Protected Sub Button1_Click(ByVal sender As Object, _
     ByVal e As System.EventArgs)
       If Page.IsValid Then
           Label1.Text = "You are set to arrive on: " & TextBox1.Text
       End If
   End Sub

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>Date Validation Check</title>

</head> <body>

   <form id="form1" runat="server">
       Arrival Date:
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
       <asp:RangeValidator ID="RangeValidator1" runat="server" 
                           ErrorMessage="select a date within the next two weeks." 
                           ControlToValidate="TextBox1" 
                           Type="Date"/>
       
Select your arrival date:
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label> </form>

</body> </html></source>