ASP.Net/Validation by Control/By Your Function

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

Date validation: start, end date (C#)

   <source lang="csharp">

<%@ Page language="c#" %> <%@ Import Namespace="System.Drawing" %>

 <script language="c#" runat="server">
 protected void ValidateTravelData(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
 {
   args.IsValid = false;
   DateTime departDate, returnDate;
   feedbackLabel.ForeColor = Color.Red;
   try 
   {
       departDate = DateTime.Parse(flightDepartureDateTextBox.Text);
   } catch (Exception ex) 
   {
       feedbackLabel.Text = "Invalid data entry: Departure Date is invalid. " +
                            "Enter a valid date, for example:  01/20/2006";
       return;
   }
   try 
   {
       returnDate = DateTime.Parse(flightReturnDateTextBox.Text);
   } catch (Exception ex) 
   {
       feedbackLabel.Text = "Invalid data entry: Return Date is invalid. " +
                            "Enter a valid date, for example:  01/20/2006";
       return;
   }
   // Verify that the departure date is less than the
   // return date - no same day trips in this system!
   if (departDate >= returnDate)
   {
       feedbackLabel.Text = "Invalid data entry: The Departure Date must be " + 
                            "earlier than the Return Date and no same-day " + 
                            "returns for this travel package!"; 
       return;
   }
   // Verify that the departure date is not in the past or today!
   if (departDate < DateTime.Now)
   {
       feedbackLabel.Text = "Invalid data entry:  The Departure Date cannot " +
                            "be in the past or today!"; 
       return;
   }
   // Everthing is valid - set the IsValid flag...
   args.IsValid = true;
 }
  
 private void bookTheTripButton_Click(object sender, EventArgs e)
 {
   // Has the page been validated for all data entry?
   if (!(Page.IsValid))
   {
     return;
   }
   // We"re all set - book the flight!
   DateTime departDate, returnDate;
   departDate = DateTime.Parse(flightDepartureDateTextBox.Text);
   returnDate = DateTime.Parse(flightReturnDateTextBox.Text);
   feedbackLabel.ForeColor = Color.Black;
   feedbackLabel.Text = "Success!  Your trip from Chicago to London " + 
                        "will depart on the " + departDate.ToLongDateString() + 
                        " and return on the " + returnDate.ToLongDateString();
 }</script>

<html> <head></head>

 <body>

Travel: Chicago to London

   <form id="TravelForm" method="post" runat="server">
   
     <asp:panel id="Panel" runat="server" Width="504px" Height="89px" 
     BackColor="Wheat">Departure Date:
     <asp:TextBox id="flightDepartureDateTextBox" runat="server"
     Width="80px" Height="22px"/>Return Date:
     <asp:TextBox id="flightReturnDateTextBox" runat="server"
      Width="80px" Height="22px"/></br>
     <asp:RequiredFieldValidator id="validateFlightDepartureDate" runat="server"
     ErrorMessage="Please enter a valid Departure Date.  "
     ControlToValidate="flightDepartureDateTextBox" />
     <asp:RequiredFieldValidator id="validateFlightReturnDate" runat="server"
     ErrorMessage="Please enter a valid Return Date."
     ControlToValidate="flightReturnDateTextBox" />
     <asp:CustomValidator id="validateFlightDates" runat="server"
     ControlToValidate="flightDepartureDateTextBox"
     OnServerValidate="ValidateTravelData" />
     </asp:panel>

<asp:Button id="bookTheTripButton" runat="server" Text="Book This Trip" OnClick="bookTheTripButton_Click" />

<asp:Label id="feedbackLabel" runat="server" BackColor="Wheat" Font-Bold="True" Text="Select your options, then click the "Book This Trip" button!" />

   </form>
 </body>

</html>

      </source>
   
  


Implement custom validation control event (VB.net)

   <source lang="csharp">

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

   Protected Sub valProductCode_ServerValidate(ByVal source As Object, ByVal args As ServerValidateEventArgs)
       If args.Value.Length = 4 Then
           args.IsValid = True
       Else
           args.IsValid = False
       End If
   End Sub

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

   <title>Show Validate Empty Text</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:Label  
       id="lblProductCode"
       Text="Product Code:"
       AssociatedControlID="txtProductCode"
       Runat="server" />
   
<asp:TextBox id="txtProductCode" Runat="server" /> <asp:CustomValidator id="valProductCode" ControlToValidate="txtProductCode" Text="(Invalid product code)" ValidateEmptyText="true" OnServerValidate="valProductCode_ServerValidate" Runat="server" />

<asp:Button id="btnSubmit" Text="Submit" Runat="server" />
   </form>

</body> </html>

      </source>
   
  


Validate by a Server Validate function (VB.net)

   <source lang="csharp">

<%@ Page Language=VB Debug=true %> <script runat=server> Sub Answer_ServerValidation(source As object, E As ServerValidateEventArgs)

   If E.Value = "VB" or E.Value = "VB.NET" or E.Value = "C#" _
       or E.Value = "C#.NET" or E.Value = "A bunch of others." Then
       E.IsValid = True
   Else
       E.IsValid = False
   End If

End Sub </SCRIPT> <HTML> <HEAD> <TITLE>Using a RegularExpressionValidator Control to Test a Zip Code</TITLE> </HEAD> <form runat="server">

What languages can you use with ASP.NET?
<asp:textbox

   id="txtAnswer" 
   runat=server 

/> <asp:customvalidator

   id="custom9"
   controltovalidate="txtAnswer"
   OnServerValidate="Answer_ServerValidation"
   display="Dynamic"
   font-name="Verdana"
   font-bold="True"
   font-size="10pt"
   runat="server">
   
Incorrect answer please try again!

</asp:CustomValidator>

<asp:button

   id="butOK"
   text="OK"
   type="Submit"
   runat="server"

/> </form> </BODY> </HTML>

      </source>
   
  


Validate control in code behind in C#

   <source lang="csharp">

<%@ Page language="c#" src="CustomerForm.aspx.cs" AutoEventWireup="false" Inherits="CustomerForm" %> <HTML>

 <body>
   <form id="Form1" method="post" runat="server">
       <asp:TextBox id="txtUserName" style="Z-INDEX: 101; LEFT: 160px; POSITION: absolute; TOP: 16px"
         runat="server" Width="152px"></asp:TextBox>
       <asp:Label id="Label1" style="Z-INDEX: 102; LEFT: 72px; POSITION: absolute; TOP: 19px" runat="server"
         Font-Bold="True">User Name:</asp:Label>
       <asp:TextBox id="txtPassword" style="Z-INDEX: 103; LEFT: 160px; POSITION: absolute; TOP: 56px"
         runat="server" TextMode="Password" Width="152px"></asp:TextBox>
       <asp:Label id="Label2" style="Z-INDEX: 104; LEFT: 80px; POSITION: absolute; TOP: 59px" runat="server"
         Font-Bold="True">Password:</asp:Label>
       <asp:TextBox id="txtRetype" style="Z-INDEX: 105; LEFT: 160px; POSITION: absolute; TOP: 88px"
         runat="server" TextMode="Password" Width="152px"></asp:TextBox>
       <asp:Label id="Label3" style="Z-INDEX: 106; LEFT: 13px; POSITION: absolute; TOP: 91px" runat="server"
         Font-Bold="True">Password (retype):</asp:Label>
       <asp:Label id="Label4" style="Z-INDEX: 107; LEFT: 104px; POSITION: absolute; TOP: 140px" runat="server"
         Font-Bold="True">E-mail:</asp:Label>
       <asp:TextBox id="txtEmail" style="Z-INDEX: 108; LEFT: 160px; POSITION: absolute; TOP: 136px"
         runat="server" Width="152px"></asp:TextBox>
       <asp:TextBox id="txtAge" style="Z-INDEX: 109; LEFT: 160px; POSITION: absolute; TOP: 176px" runat="server"
         Width="152px"></asp:TextBox>
       <asp:Label id="Label5" style="Z-INDEX: 110; LEFT: 117px; POSITION: absolute; TOP: 179px" runat="server"
         Width="32px" Height="16px" Font-Bold="True">Age:</asp:Label>
       <asp:Label id="Label6" style="Z-INDEX: 111; LEFT: 48px; POSITION: absolute; TOP: 228px" runat="server"
         Width="106px" Height="24px" Font-Bold="True">Referrer Code:</asp:Label>
       <asp:TextBox id="txtCode" style="Z-INDEX: 112; LEFT: 160px; POSITION: absolute; TOP: 224px" runat="server"
         Width="152px"></asp:TextBox>
       <asp:RequiredFieldValidator id="vldUserName" style="Z-INDEX: 113; LEFT: 336px; POSITION: absolute; TOP: 18px"
         runat="server" ErrorMessage="You must enter a user name." ControlToValidate="txtUserName"></asp:RequiredFieldValidator>
       <asp:RequiredFieldValidator id="vldPassword" style="Z-INDEX: 115; LEFT: 336px; POSITION: absolute; TOP: 59px"
         runat="server" ErrorMessage="You must enter a password." ControlToValidate="txtPassword"></asp:RequiredFieldValidator>
       <asp:CompareValidator id="vldRetype" style="Z-INDEX: 114; LEFT: 336px; POSITION: absolute; TOP: 93px"
         runat="server" ErrorMessage="Your password does not match." ControlToCompare="txtPassword" ControlToValidate="txtRetype"></asp:CompareValidator>
       <asp:RegularExpressionValidator id="vldEmail" style="Z-INDEX: 117; LEFT: 337px; POSITION: absolute; TOP: 139px"
         runat="server" ErrorMessage="This email is missing the @ symbol." ValidationExpression=".+@.+" ControlToValidate="txtEmail"></asp:RegularExpressionValidator>
       <asp:RangeValidator id="vldAge" style="Z-INDEX: 116; LEFT: 337px; POSITION: absolute; TOP: 180px" runat="server"
         ErrorMessage="This age is not between 0 and 120." Type="Integer" MaximumValue="120" MinimumValue="0"
         ControlToValidate="txtAge"></asp:RangeValidator>
       <asp:CustomValidator id="vldCode" style="Z-INDEX: 118; LEFT: 337px; POSITION: absolute; TOP: 227px" runat="server"
         ErrorMessage="Try a string that starts with 014." ControlToValidate="txtCode" ClientValidationFunction="MyCustomValidation"></asp:CustomValidator>
       <asp:Button id="cmdSubmit" style="Z-INDEX: 119; LEFT: 160px; POSITION: absolute; TOP: 304px"
         runat="server" Width="120px" Text="Submit"></asp:Button>
       <asp:Button id="cmdCancel" style="Z-INDEX: 120; LEFT: 304px; POSITION: absolute; TOP: 304px"
runat="server" Width="121px" Height="24px" Text="Cancel" CausesValidation="False"></asp:Button>
     <asp:Label id="lblMessage" style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 388px"
       runat="server" Width="616px" Height="72px"></asp:Label>
   </form>
 </body>

</HTML>

<%-- CustomerForm.aspx.cs using System; using System.Collections; using System.ruponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;

 public class CustomerForm : System.Web.UI.Page
 {
   protected System.Web.UI.WebControls.TextBox txtUserName;
   protected System.Web.UI.WebControls.Label Label1;
   protected System.Web.UI.WebControls.TextBox txtPassword;
   protected System.Web.UI.WebControls.Label Label2;
   protected System.Web.UI.WebControls.TextBox txtRetype;
   protected System.Web.UI.WebControls.Label Label3;
   protected System.Web.UI.WebControls.Label Label4;
   protected System.Web.UI.WebControls.TextBox txtEmail;
   protected System.Web.UI.WebControls.TextBox txtAge;
   protected System.Web.UI.WebControls.Label Label5;
   protected System.Web.UI.WebControls.Label Label6;
   protected System.Web.UI.WebControls.TextBox txtCode;
   protected System.Web.UI.WebControls.RequiredFieldValidator vldUserName;
   protected System.Web.UI.WebControls.RequiredFieldValidator vldPassword;
   protected System.Web.UI.WebControls.rupareValidator vldRetype;
   protected System.Web.UI.WebControls.RegularExpressionValidator vldEmail;
   protected System.Web.UI.WebControls.RangeValidator vldAge;
   protected System.Web.UI.WebControls.CustomValidator vldCode;
   protected System.Web.UI.WebControls.Button cmdSubmit;
   protected System.Web.UI.WebControls.Button cmdCancel;
   protected System.Web.UI.WebControls.Label lblMessage;
 
   private void Page_Load(object sender, System.EventArgs e)
   {
     // Put user code to initialize the page here
   }
   #region Web Form Designer generated code
   override protected void OnInit(EventArgs e)
   {
     //
     // CODEGEN: This call is required by the ASP.NET Web Form Designer.
     //
     InitializeComponent();
     base.OnInit(e);
   }
   
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {    
     this.vldCode.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.vldCode_ServerValidate);
     this.cmdSubmit.Click += new System.EventHandler(this.cmdSubmit_Click);
     this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click);
     this.Load += new System.EventHandler(this.Page_Load);
   }
   #endregion
   private void cmdSubmit_Click(object sender, System.EventArgs e)
   {
     if (!this.IsValid) return;
     lblMessage.Text = "This is a valid form.";
   }
   private void cmdCancel_Click(object sender, System.EventArgs e)
   {
       lblMessage.Text = "No attempt was made to validate this form.";
   }
   private void vldCode_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs e)
   {
     try{
       int val = Int32.Parse(e.Value.Substring(0, 3));
       if (val % 3 == 0){
         e.IsValid = true;
       }else{
         e.IsValid = false;
       }
     }catch{
       e.IsValid = false;
     }
   }
 }

--%>

      </source>
   
  


Validate control manually in C#

   <source lang="csharp">

<%@ Page language="c#" src="ManualValidation.aspx.cs" AutoEventWireup="false" Inherits="ManualValidation" %> <HTML>

 <body>
   <form id="Form1" method="post" 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"></asp:Button>

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

</HTML> <%-- using System; using System.Collections; using System.ruponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;

 public class ManualValidation : System.Web.UI.Page
 {
   protected System.Web.UI.WebControls.TextBox txtValidated;
   protected System.Web.UI.WebControls.RangeValidator RangeValidator;
   protected System.Web.UI.WebControls.TextBox txtNotValidated;
   protected System.Web.UI.WebControls.Button cmdOK;
   protected System.Web.UI.WebControls.Label lblMessage;
 
   private void Page_Load(object sender, System.EventArgs e)
   {
     // Put user code to initialize the page here
   }
   #region Web Form Designer generated code
   override protected void OnInit(EventArgs e)
   {
     //
     // CODEGEN: This call is required by the ASP.NET Web Form Designer.
     //
     InitializeComponent();
     base.OnInit(e);
   }
   
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {    
     this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
     this.Load += new System.EventHandler(this.Page_Load);
   }
   #endregion
   private void cmdOK_Click(object sender, System.EventArgs e)
   {
     string errorMessage = "Mistakes found:
"; TextBox ctrlInput; bool pageIsValid = true; foreach (BaseValidator ctrl in this.Validators) { if (!ctrl.IsValid) { pageIsValid = false; errorMessage += ctrl.ErrorMessage + "
"; ctrlInput = (TextBox)this.FindControl(ctrl.ControlToValidate); errorMessage += " * Problem is with this input: "; errorMessage += ctrlInput.Text + "
"; } } if (!pageIsValid) lblMessage.Text = errorMessage; } }

--%>

      </source>
   
  


Validating a Percentage Using the CustomValidator Control (VB.net)

   <source lang="csharp">

<%@ Page Language=VB Debug=true %> <script runat=server> Sub Answer_ServerValidation(source As object, E As ServerValidateEventArgs)

   Dim TheNumber as Single
   If Right(E.Value, 1) = "%" Then
       TheNumber = Left(E.Value, Len(E.Value) - 1)
       If TheNumber > 100 or TheNumber < 0 Then
           E.IsValid = False
       Else
           E.IsValid = True
       End If   
   Else
       E.IsValid = False
   End If

End Sub </SCRIPT> <HTML> <HEAD> <TITLE>Validating a Percentage Using the CustomValidator Control</TITLE> </HEAD> <form runat="server">

Enter a Percentage up to 100%:
<asp:textbox

   id="txtAnswer" 
   runat=server 

/> <asp:customvalidator

   id="custom9"
   controltovalidate="txtAnswer"
   OnServerValidate="Answer_ServerValidation"
   display="Dynamic"
   font-name="Verdana"
   font-bold="True"
   font-size="10pt"
   runat="server">
   
Incorrect answer please try again!

</asp:CustomValidator>

<asp:button

   id="butOK"
   text="OK"
   type="Submit"
   runat="server"

/> </form> </BODY> </HTML>

      </source>