DotNet Tutorials

V4 Dot Net Tutorials

Server Intellect Cloud Hosting

 User Input Validation - Client & Server - in C#.NET

This tutorial shows how you can validate the input of users using ASP.NET and C# This tutorial shows how the ASP.NET tools make it easy for you to validate user input, both client-side and server-side.

First we add the form elements from the Toolbox, including the RequiredFieldValidator, RegularExpressionValidator and the ValidationSummary.

We are using Server Intellect and have found that by far, they are the most friendly, responsive, and knowledgeable support team we've ever dealt with!

Note the CustomValidator control, which allows us to create a custom rule for validation. This particular one checks to see if a date is in the correct format:

<form id="form1" runat="server">
<div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="textEmail" Display="Dynamic" ErrorMessage="Email Address is Required" ValidationGroup="AllValidators">*</asp:RequiredFieldValidator>
Email:
<asp:TextBox ID="textEmail" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="textEmail" Display="Dynamic" ErrorMessage="Email Address must be in the format abc@xyz.abc" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="AllValidators">Invalid Format</asp:RegularExpressionValidator><br />

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="textNumberInParty" ErrorMessage="Number in Party is Required" ValidationGroup="AllValidators">*</asp:RequiredFieldValidator>
Number in Party:
<asp:TextBox ID="textNumberInParty" runat="server" Width="45px"></asp:TextBox> 
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="textNumberInParty" Display="Dynamic" ErrorMessage="Please enter 1-20 for the number of people in your party" MaximumValue="20" MinimumValue="1" Type="Integer" ValidationGroup="AllValidators">Enter a number between 1 and 20</asp:RangeValidator><br />

<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="textPreferredDate" Display="Dynamic" ErrorMessage="Date is Required" ValidationGroup="AllValidators">*</asp:RequiredFieldValidator>
Preferred Date:
<asp:TextBox ID="textPreferredDate" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="textPreferredDate" Display="Dynamic" ErrorMessage="Format: m/d/yyyy" OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="AllValidators" ClientValidationFunction="validateDate">Invalid format (m/d/yyyy)</asp:CustomValidator><br />

<asp:RequiredFieldValidator ID="validatorRequiredPhoneNumber" runat="server" ControlToValidate="textPhoneNumber" Display="Dynamic" ErrorMessage="You must provide a phone number">*</asp:RequiredFieldValidator>
<asp:CheckBox ID="checkPhoneConfirmation" runat="server" AutoPostBack="True" OnCheckedChanged="checkPhoneConfirmation_CheckedChanged" Text="Confirm Reservation by Phone" /><br />
Tel. No.
<asp:TextBox ID="textPhoneNumber" runat="server" Enabled="False"></asp:TextBox> 
<asp:RegularExpressionValidator ID="validatorRegExPhoneNumber" runat="server" ControlToValidate="textPhoneNumber" Display="Dynamic" ErrorMessage="Phone number format is invalid" ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}">Invalid Format</asp:RegularExpressionValidator><br />
<asp:Button ID="buttonSubmit" runat="server" OnClick="buttonSubmit_Click" Text="Submit" ValidationGroup="AllValidators" /><br />
<asp:Label ID="labelResponse" runat="server"></asp:Label><br />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="AllValidators" />
</div>
</form>

In the code-behind file we have the following:

protected void Page_Load(object sender, EventArgs e)
{
labelResponse.Text = "";
}
protected void buttonSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
labelResponse.Text = "Your request has been processed. Thank you.";
}
else
{
labelResponse.Text = "Date is not valid.";
}
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
try
{
DateTime.ParseExact(args.Value, "d", null);
args.IsValid = true;
}
catch
{
args.IsValid = false;
}
} protected void checkPhoneConfirmation_CheckedChanged(object sender, EventArgs e)
{
if(checkPhoneConfirmation.Checked)
{
textPhoneNumber.Enabled = true;
validatorRequiredPhoneNumber.ValidationGroup = "AllValidators";
validatorRegExPhoneNumber.ValidationGroup = "AllValidators";
}
else
{
textPhoneNumber.Enabled = false;
validatorRequiredPhoneNumber.ValidationGroup = "";
validatorRegExPhoneNumber.ValidationGroup = "";
}
}

For client-side validation of the date field, we can use a bit of JavaScript:

If you're ever in the market for some great Windows web hosting, try Server Intellect. We have been very pleased with their services and most importantly, technical support.

Note: For this to work, the 'EnableClientScript' Property of the CustomValidator has to be set to True.

<script language="javascript">
function validateDate(oSrc, args)
{
var iDay, iMonth, iYear;
var arrValues;
arrValues = args.Value.split("/");
iMonth = arrValues[0];
iDay = arrValues[1];
iYear = arrValues[2];

var testDate = new Date(iYear, iMonth - 1, iDay);
if ((testDate.getDate() != iDay) ||
(testDate.getMonth() != iMonth - 1) ||
(testDate.getFullYear() != iYear))
{
args.IsValid = false;
return;
}

return true;
} </script>


Looking for the VB.NET 2005 Version? Click Here!

Looking for more ASP.NET Tutorials? Click Here!
Download Project Source - Enter your Email to be emailed a link to download the Full Source Project used in this Tutorial!



100% SPAM FREE! We will never sell or rent your email address!