ASP.Net/Validation by Control/By Your Function
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>