Ramani Sandeep's Blog

DotNetting – Fast , Easy Way of Developing Applications

Posts Tagged ‘Validation Controls’

ASP.NET Validation Controls

Posted by Ramani Sandeep on November 6, 2008

With ASP.NET, there are six(6) controls included.

They are:

  • The RequiredFieldValidation Control
  • The CompareValidator Control
  • The RangeValidator Control
  • The RegularExpressionValidator Control
  • The CustomValidator Control


All of the validation controls inherit from the base class BaseValidator so they
all have a series of properties and methods that are common to all validation controls.
They are:

  • ControlToValidate – This value is which control the validator is applied to.
  • ErrorMessage – This is the error message that will be displayed in the validation summary.
  • IsValid – Boolean value for whether or not the control is valid.
  • Validate – Method to validate the input control and update the IsValid property.
  • Display – This controls how the error message is shown. Here are the possible options:

o None (The validation message is never displayed.)
o Static (Space for the validation message is allocated in the page layout.)
o Dynamic (Space for the validation message is dynamically added to the page if validation fails.)

The RequiredFieldValidation Control
———————————–

The first control we have is the RequiredFieldValidation Control. As it’s obvious,
it make sure that a user inputs a value. Here is how it’s used:

Required field: <asp:textbox id=”textbox1″ runat=”server”/>
<asp:RequiredFieldValidator id=”valRequired” runat=”server” ControlToValidate=”textbox1″
ErrorMessage=”* You must enter a value into textbox1″ Display=”dynamic”>*
</asp:RequiredFieldValidator>

The CompareValidator Control
—————————–
Next we look at the CompareValidator Control. Usage of this CompareValidator is for
confirming new passwords, checking if a departure date is before the arrival date, etc.
We’ll start of with a sample:

Textbox 1: <asp:textbox id=”textbox1″ runat=”server”/><br />
Textbox 2: <asp:textbox id=”textbox2″ runat=”server”/><br />
<asp:CompareValidator id=”valCompare” runat=”server”
ControlToValidate=”textbox1″ ControlToCompare=”textbox2″
Operator=”Equals”
ErrorMessage=”* You must enter the same values into textbox 1 and textbox 2″
Display=”dynamic”>*
</asp:CompareValidator>

Here we have a sample where the two textboxes must be equal. The tags that are unique to this control is the ControlToCompare attribute which is the control that will be compared. The two controls are compared with the type of comparison specified in the Operator attribute. The Operator attribute can contain Equal, GreterThan, LessThanOrEqual, etc.
Another usage of the ComapareValidator is to have a control compare to a value. For example:

Field: <asp:textbox id=”textbox1″ runat=”server”/>
<asp:CompareValidator id=”valRequired” runat=”server” ControlToValidate=”textbox1″
ValueToCompare=”50″
Type=”Integer”
Operator=”GreaterThan”
ErrorMessage=”* You must enter the a number greater than 50″ Display=”dynamic”>*
</asp:CompareValidator>

The RangeValidator Control
————————–

Range validator control is another validator control which checks to see if a control value is within a valid range. The attributes that are necessary to this control are: MaximumValue, MinimumValue, and Type.
Sample:

Enter a date from 1998:
<asp:textbox id=”textbox1″ runat=”server”/>
<asp:RangeValidator id=”valRange” runat=”server”
ControlToValidate=”textbox1″
MaximumValue=”12/31/1998″
MinimumValue=”1/1/1998″
Type=”Date”
ErrorMessage=”* The date must be between 1/1/1998 and 12/13/1998″ Display=”static”>*</asp:RangeValidator>

The RegularExpressionValidator Control
————————————–

The regular expression validator is one of the more powerful features of ASP.NET.
Everyone loves regular expressions. Especially when you write those really big nasty ones…
and then a few days later, look at it and say to yourself. What does this do?
Again, the simple usage is:

E-mail: <asp:textbox id=”textbox1″ runat=”server”/>
<asp:RegularExpressionValidator id=”valRegEx” runat=”server”
ControlToValidate=”textbox1″
ValidationExpression=”.*@.*\..*”
ErrorMessage=”* Your entry is not a valid e-mail address.”
display=”dynamic”>*
</asp:RegularExpressionValidator>

The CustomValidator Control
—————————–

The final control we have included in ASP.NET is one that adds great flexibility to our
validation abilities. We have a custom validator where we get to write out own functions
and pass the control value to this function.

Field: <asp:textbox id=”textbox1″ runat=”server”>
<asp:CustomValidator id=”valCustom” runat=”server”
ControlToValidate=”textbox1″
ClientValidationFunction=”ClientValidate”
OnServerValidate=”ServerValidate”
ErrorMessage=”*This box is not valid” dispaly=”dynamic”>*
</asp:CustomValidator>

We notice that there are two new attributes ClientValidationFunction and OnServerValidate.
These are the tell the validation control which functions to pass the controltovalidate value to.
ClientValidationFunction is usually a javascript funtion included in the html to the user.
OnServerValidate is the function that is server-side to check for validation if client does
not support client-side validation.

Client Validation function:

<script language=”Javascript”>
<!–
/* … Code goes here … */
–>
</script>

>

Server Validation function:

Sub ServerValidate (objSource As Object, objArgs As ServerValidateEventsArgs)
‘ Code goes here
End Sub

Validation Summary
——————-

ASP.NET has provided an additional control that complements the validator controls.
This is the validation summary control which is used like:

<asp:ValidationSummary id=”valSummary” runat=”server”
HeaderText=”Errors:”
ShowSummary=”true” DisplayMode=”List” />

Posted in ASP.NET | Tagged: | Leave a Comment »

Tips for Validation Controls

Posted by Ramani Sandeep on November 6, 2008

Tip 1: Always use Page.IsValid before submitting data. Apart from the other benefits, using it prevents submitting data from old browsers that do not support javascript.

Tip 2: The display property for the ASP.NET validation controls has 3 settings: None, Static(default), and Dynamic. ‘Static’ outputs HTML code (related to error) at all times even when no error has occurred. So when there is more than one validation control placed next to the field, the first validation control occupies screen space even when there is no error. In case the second validation control fires an error message, the message is pushed away from the control since the first validation control is occupying screen space.
Set the ‘display’ property of a validation control to ‘Dynamic’. This property renders the error message with the attribute display:none; It helps you to display the error message next to the control .

Tip 3: To prevent validation to occur on the click of the Cancel button, set the ‘CausesValidation’ property to false
<asp:Button ID=”btnCancel” Runat=”server” CausesValidation=”False” Text=”Cancel” />

Tip 4: Use the ‘InitialValue’ property of the RequiredFieldValidator to validate controls like combobox which have a default value.
For eg: If your combobox has a default item called “–Select –“ and you want that the user should select a value other than the default value before submitting the form, then set the ‘InitialValue’ property of the RequiredFieldValidator to “–Select–“.
<asp:DropDownList ID=”DropDownList1″ runat=”server”>
<asp:ListItem Value=”–Select–” />
<asp:ListItem Value=”Item1″ />
<asp:ListItem Value=”Item2″ />
<asp:ListItem Value=”Item3″ />
</asp:DropDownList>
<asp:RequiredFieldValidator ID=”RequiredFieldValidator1″ runat=”server” ErrorMessage=”RequiredFieldValidator” ControlToValidate=”DropDownList1″ InitialValue=”–Select–”></asp:RequiredFieldValidator>

Tip 5: A RegularExpressionValidator can be used to handle string patterns. For eg: A Name textbox that should accept a maximum of 30 characters with only alphabets, space, fullstop(.) and a ‘(apostrophe). A regularexpression like ‘^([a-zA-z.'\s]{2,30})$’ does the trick.
However when you are using Localization and using a language like Arabic, you have to often provide for validating characters in a different dialect. You can solve this using the following technique:
- In the Resource.resx file, create a resourcekey called ValidName giving it a value of ^([a-zA-z.'\s]{2,30})$
- In the Resource.ar-EG.resx file, use the same key but with a diff value ^([\u0600-\u06FF.'\s]{2,30})$
Use it in your page using the following way. Observe the bold text:

<asp:RegularExpressionValidatorID=’regEVFname’ runat=’server’ControlToValidate=’txtName’
Display=’Dynamic’ErrorMessage=’Invalid’
ValidationExpression=’<%$ Resources:Resource, ValidName %>’SetFocusOnError=’True’></asp:RegularExpressionValidator>

When the user selects English, he can enter only A-Za-z. Similarly for Arabic, he can enter only the Arabic characters and not English.

Tip 6: The validation controls provide both Server and Client Side validation. To turn off client-side validation, set the ‘EnableClientScript = false’
<asp:RequiredFieldValidator ID=”RequiredFieldValidator2″ Runat=”server”
Text=”Error” ControlToValidate=”TextBox1″ EnableClientScript=”false”/>

Tip 7: Use CompareValidator to validate date with format of “dd/MM/yyyy”.
The validator uses the CultureInfo object of the thread to determine date format. So what you need to do is to set the desired culture format in the Page directive
<%@ Page culture=”your culture” %>
This tip was shared by PeterBlum in the asp.net forums. By the way, Peter has an amazing suite of data entry and validation controls on his site at a reasonable price.

Tip 8: Instead of the textual error message, you can even add an image or sound to your validator control. The Text and Error Message property accepts HTML tags.
<asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>
<br />
<asp:RequiredFieldValidator ControlToValidate=”TextBox1″ EnableClientScript=”false” ID=”RequiredFieldValidator1″ runat=”server” Text=”<bgsound src=’C:\Windows\Media\Windows Error.wav’>”></asp:RequiredFieldValidator>
Just make sure that the EnableClientScript=”false” when you want a sound instead of a text message.

Tip 9: If you have two set of forms (eg: Login and Registration) in a single page and want to keep the validation of the two groups separate, use ‘ValidationGroups’. All you need to do, is to specify a common group name for a set of controls that you want to validate separately.
<div>
<asp:TextBox ID=”TextBox1″ ValidationGroup=”Group1″ runat=”server”></asp:TextBox>
<br />
<asp:RequiredFieldValidator ControlToValidate=”TextBox1″ ValidationGroup=”Group1″ ID=”RequiredFieldValidator1″ runat=”server” Text=”Error”></asp:RequiredFieldValidator>
<asp:Button ID=”Button1″ runat=”server” ValidationGroup=”Group1″ Text=”Button” />
</div>
<br />
<br />
<div>
<asp:TextBox ID=”TextBox2″ ValidationGroup=”Group2″ runat=”server”></asp:TextBox>
<br />
<asp:RequiredFieldValidator ControlToValidate=”TextBox1″ ValidationGroup=”Group2″ EnableClientScript=”false” ID=”RequiredFieldValidator2″ runat=”server” Text=”Error”></asp:RequiredFieldValidator>
<asp:Button ID=”Button2″ runat=”server” ValidationGroup=”Group2″ Text=”Button” />
</div>

Tip 10: Other validator controls like CompareValidator, RangeValidator etc. do not provide a way to detect if the field is blank or required. The only way is to do this is to add a RequiredFieldValidator along with the other validator controls.
However one exception being the CustomValidator which provides a property called ‘ValidateEmptyText’. Just set it to true and it validates the field even if the user has kept the field blank.

Tip 11: If you want your validation error message to appear in the ‘ValidationSummary‘ control, then set the ‘ErrorMessage’ property on that validation control. Also, setting ‘ShowMessageBox = true’ on the ValidationSummary enables you to display a popup alert.

Tip 12: In order to create a CustomValidationControl you have to derive from the ‘BaseValidator’ class and implement the ‘EvaluateIsValid()’ method.

Tip 13: In case of an error, the validation controls allow you to set focus on a control in error using the ‘SetFocusOnError’ property.
<asp:RequiredFieldValidator SetFocusOnError=”true” ControlToValidate=”TextBox1″ ID=”RequiredFieldValidator1″ runat=”server” Text=”Error!!”></asp:RequiredFieldValidator>

Posted in ASP.NET | Tagged: , , | 1 Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 317 other followers