index

Using Validation Controls

Need a ValidationSummary at the top:
<div class="w100P">
    <asp:ValidationSummary ID="vldAddSupportIncidentSummary" runat="server" 
        CssClass="validation" Style="margin-top:-5px; margin-bottom:10px;" 
        EnableClientScript="true" DisplayMode="BulletList" 
        HeaderText="The Following Error(s) Occurred:" ShowSummary="true" 
        ValidationGroup="AddSupportIncident" Visible="true" />
</div>
Validating a TextBox:
<asp:TextBox ID="txtUserAffected" runat="server" />
<asp:RequiredFieldValidator runat="server" 
	ID="vldUserAffected" 
	ControlToValidate="txtUserAffected"
	ValidationGroup="AddSupportIncident"
	ErrorMessage="A User Affected by this Request is Required" Display="None" />
Validating a DropDownList:
<asp:DropDownList ID="ddlBestContact" runat="server" />
<asp:RequiredFieldValidator runat="server" ID="vldBestContact" 
	ControlToValidate="ddlBestContact" ValidationGroup="AddSupportIncident"
	InitialValue="-99"
	ErrorMessage="A Best Contact Method is Required" Display="None" />
What you need on the submit button:
<asp:LinkButton ID="lbSave" ValidationGroup="AddSupportIncident"
	runat="server" Text="Add" CssClass="button" OnClick="lbSave_Click" />
And in code behind:
protected void lbSave_Click(object sender, EventArgs e)
{
	try
	{
		//Page.Validate(vldAddSupportIncidentSummary.ValidationGroup);
		if (Page.IsValid)
		{
			//AddIncident();
		}
	}
	catch (System.Exception ex)
	{
		//HandleError(ex);
	}
}

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

..\VRM.Website.ITPortal\Directory\ContactDetail.aspx
<fieldset>
	<label>E-Mail:</label>
	<asp:TextBox ID="txtEmail" runat="server" />
	<asp:CustomValidator ID="vldEmailAddress" runat="server" 
		ControlToValidate="txtEmail" 
		ErrorMessage="E-Mail Address Is Required And Must Be In A Valid Format." 
		ClientValidationFunction="validateEmail" 
		ServerValidate="ValidateEmail" 
		Display="None" 
		ValidateEmptyText="true" />                
</fieldset>
<fieldset>
	<label>Phone:</label>
	<telerik:RadMaskedTextBox ID="txtPhoneNumber" runat="server" SkinID="phoneField" />
	<asp:CustomValidator ID="vldPhoneNumber" runat="server" 
		ErrorMessage="Phone Number Must Be In (###)###-#### Format." 
		ControlToValidate="txtPhoneNumber" 
		Display="None" 
		ClientValidationFunction="validatePhoneNumber" />
</fieldset>

..\VRM.Website.ITPortal\Directory\ContactDetail.aspx.cs
private static string ScrubPhoneNumber(string phoneNumber)
{
	return phoneNumber.Replace(" ", string.Empty)
			.Replace("(", string.Empty)
			.Replace(")", string.Empty)
			.Replace("-", string.Empty);
}

//using System.Text.RegularExpressions;
protected void ValidateEmail(object sender, ServerValidateEventArgs e)
{
	try
	{
		Regex regex = new Regex(@"^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}");
		e.IsValid = regex.IsMatch(e.Value);
	}
	catch (System.Exception ex)
	{
		HandleError(ex);
	}
}

..\VRM.Website.ITPortal\Includes\JS\library.js
/* Validation Functions */

function validateName(sender, args) {
    args.IsValid = /^([a-zA-Z ]{2,30})$/.test(args.Value);
}

//Email addresses should not be any larger than 50 characters.
function validateEmailLength(sender, args) {
    var validEmailLength = 50;
    args.IsValid = args.Value.length <= validEmailLength;
}

function validateEmail(sender, args) {

    args.IsValid = /^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$/.test(args.Value);
}

// Custom validation method for phone number.
function validatePhoneNumber(sender, args) {
    args.IsValid = /^(\([2-9]\d{2}\) ?|[2-9]\d{2}[- \/\.]?)\d{3}[- \/\.]?\d{4}$/.test(args.Value);
}

function validateMaskedPhoneNumber(sender, args) {
    if (args.Value != "(###)###-####" && args.Value.length > 0) {
        args.IsValid = true;
        return;
    }
    args.IsValid = false;
}

// Custom validation method for zip code.
function validateZipCode(sender, args) {
    args.IsValid = /^\d{5}[- ]?(\d{4})?$/.test(args.Value);
}

To validate a phone number, per Bobby: be sure to specify an error message, and if it's required, just add the ValidateEmptyText property to "true" and you can get rid of the required field validator you already have.
<telerik:RadMaskedTextBox ID="txtAltPhoneNumber" runat="server" SkinID="phoneField" />
<asp:CustomValidator ID="vldAltPhoneNumber" runat="server" ValidationGroup="AddSupportIncident"
	ControlToValidate="txtAltPhoneNumber" Display="None" 
	ClientValidationFunction="validatePhoneNumber"
	ErrorMessage="Alt Phone Number must be in (###) ###-#### format, all numbers, no leading 1" />