Home > Articles

  • Print
  • + Share This

Using the Validator Ccontrols

When you are writing data entry forms for the web, you must often need to make certain that the form is filled out correctly. This would mean that certain fields are filled in, others are filled in, but with values that fit into a range, and so on. In the past, this was could either be done by writing code at either at the server or at the client. If the code is at the server, it might result in causing the information to be passed between the client and server needlessly. If you would rather place the code at the client, you run into the problem with cross-browser capabilities.

There are a number of Validator controls that come with Visual Basic.NET that make form validation much easier. The controls will either process the validation at the server, or at the client if the control determines that the browser is capable of it. There are five validation controls that are available in Visual Basic.NET:

  • RequiredFieldValidator – this control ensures that a field has been filled in. You can use it any time that you want to make certain that the user completes a form before submitting it.

  • CompareValidator – this control ensures either that two fields match, or how a field compares to some value. In the first case, this is useful when you want the user to enter their password twice. Comparing the field to some value would be useful if you wanted the user to enter a positive number, or if it is a particular type of information (for example, a date).

  • RangeValidator – this control ensures that the value entered in a field is within a range. The range could either be a two values (for example, a starting and ending date), or two controls. This is useful as part of a report, where you might want the user to select a date to display that is within the range of information stored in a database.

  • RegularExpressionValidator – this control ensures that the value entered "looks" like it should. The value is compared to a 'Regular Expression' (see note). If it matches, the value is considered valid. This can be useful for values that must have a certain structure, such as phone number, ISBN or part number entry fields.

  • CustomValidator – this control is the most flexible of the Validators. It allows you to add your own code to validate the field. This code could either run at the server, or on the client. This would be useful when one of the other validators does not fit your purpose, or valid information must be determined through some process – for example, if the value must be one of a number of entries that are in a database.

In addition to these five controls, there is also the ValidationSummary control. This control will display all of the error messages from all of the Validator controls on the same page. This is useful to provide a single location for all this information.

The five validation controls have a number of important properties in common. These relate to the control they monitor, and how the error is displayed. The most important of these properties are described in Table 10.4.

Table 10.4 Common properties for the validation controls

Property

Description

ControlToValidate

This is the most important property of all the validation controls. It should be set to point to another control (by name) on the same form. This is made easier, as you can simply use the drop-down in the Property window to select the monitored control.

ErrorMessage

This is the message to display if there is an error with the validator, for example, if the field is left blank. This should be enough information to allow the user to determine what is wrong, and how to fix their error.

Display

This is a rather odd property that defines how the validator control appears on the web page. By default, it is Static, however there are two other choices, Dynamic or None. If Static, it means that the space taken up by the ErrorMessage will always be taken up, even if the ErrorMessage is not being shown. This is useful if you want to guarantee how your web page will be laid out. Dynamic means that the control takes up no space until the ErrorMessage property is shown. This is useful if you don't want blank spaces on your form. Finally, if this property is set to None, the ErrorMessage will never be shown. This is really only useful in conjunction with the ValidationSummary (which will show the error).


We can use some of these controls to finish our Madlib sample application. We can use RequiredFieldValidator controls to ensure that the user has entered information in certain fields, and the RangeValidator to make certain that an appropriate number has been entered in the txtNumber field. Finally, we can summarize all errors with a ValidationSummary control.

Again, either copy the old project or form, or open the existing project to allow us to edit it. We'll add the Validator controls to this existing form.

Drag a RequiredFieldValidator next to each of the remaining TextBox controls (txtName, txtNumber, txtVerb and txtOccupation). Add a RangeValidator next to the RequiredFieldValidator you added to the txtNumber field. Finally, add a ValidationSummary control on a line of its own between the buttons and the lblResult control. Set the properties of each of these controls as shown in Table 10.5.

Table 10.5 Properties for the Validator controls

Control

Property

Value

RequiredFieldValidator

NameID

reqName

 

ControlToValidate

txtName

 

ErrorMessage

Please enter a name

RequiredFieldValidator

Name(ID)

reqNumber

 

ControlToValidate

txtNumber

 

ErrorMessage

Please enter a number

 

Display

Dynamic

RangeValidator

Name(ID)

rngNumber

 

ControlToValidate

txtNumber

 

ErrorMessage

Please enter a number between 100 and 1000

 

Display

Dynamic

 

Type

Integer

 

MaximumValue

1000

 

MinimumValue

100

RequiredFieldValidator

Name(ID)

reqVerb

 

ControlToValidate

txtVerb

 

ErrorMessage

Please enter a verb

 

Display

Dynamic

RequiredFieldValidator

Name(ID)

reqOccupation

 

ControlToValidate

txtOccupation

 

ErrorMessage

Please enter an occupation

 

Display

Dynamic

ValidationSummary

Name(ID)

valSummary


We should take a moment to describe the three properties of the RangeValidator we haven't discussed previously. While the MaximumValue and MinimumValue hopefully make sense in terms of something called a RangeValidator, the Type property is not so obvious. As the RangeValidator might be used to test a number of different types of values (integers, financial values, dates), the Type property identifies the type of information to compare. It can have one of the following values:

  • String the default, this causes the control to test if the value is alphabetically between the two extremes.

  • Integer compares the value to the two extremes to make certain that the value fits. Only Integer (whole)values are used.

  • Double the same as with Integer, but includes the decimal part of the value and extremes.

  • Currency the same as with Integer, but includes the first four decimals of the value.

  • DateTime compares the values as though they were dates, so August 27, 1964 would come between November 23, 1963 and April 1, 1986.

Now on to why the validator controls are so useful. To make them work, we don't have to add any additional code. Build and view the new web page (see Figure 10.7). Try leaving some fields blank, delete the 500 that is the default value for the number field. You should see red error messages appearing on the form. If not, try clicking the WriteStory Button. You should see something like what appears in Figure 10.8. Try entering a value outside of the range for the number field. Finally, enter in correct values for all the fields and select the WriteStory Button. All error messages should go away, and our story should be written.

  • + Share This
  • 🔖 Save To Your Account

Related Resources

There are currently no related titles. Please check back later.