Requiring Data Entry
You'll often need to ensure that users enter a value into a control on a
page. To make this easy, ASP.NET provides its RequiredFieldValidator
control. On the sample page, EmpMaint.aspx, users must supply values for
the First Name, Last Name, Birth Date, and Hire Date fields. Leaving any of
these blank isn't allowed, and you need some way to indicate this to users.
Figure 8.1 shows the sample form, after a user has attempted to submit the
page by clicking Save without filling in any information. This page
displays individual indicators of the fields that must be supplied.
Figure 8.1. The RequiredFieldValidator control makes it easier to avoid
data fields left empty.
TIP
If you watch carefully as you test this page, you'll see that if you're
using an up-level browser, you don't incur a roundtrip to the server when
you click Save with no data filled in. Because Internet Explorer supports
client-side scripting, ASP.NET emits the correct JavaScript code so that
the page can validate the data before being submitted back to the server.
This capability offloads some of the processing from the server and reduces
network traffic by not requiring a roundtrip just to validate the data.
In order to use a RequiredFieldValidator control, you'll normally need to
set the properties of the control listed in Table 8.1.
Table 8.1. Set These Properties for RequiredFieldValidator Controls
Property Description
ControlToValidate The name of the control you need to validate.
ErrorMessage The text to be displayed if the associated control's value
isn't valid. If you also supply the Text property value, this property's
text only appears in a validation summary. That is, the Text property
overrides the ErrorMessage property for display within the control.
Text The text to be displayed within the control if the associated
control's value isn't valid. If you don't supply this value, the control
displays its ErrorMessage text.
TIP
You'll normally set the properties listed in Table 8.1 for all the
validation controls. We won't list them again, but each validation control
will need to have these properties specified.
To demonstrate the use of the RequiredFieldValidator control, you will
modify the EmpMaint.aspx form, adding the necessary RequiredFieldValidator
controls, as shown in Figure 8.1. You'll load this Web Form from the
Employee hyperlink under the Maintenance section on the main form. Follow
these steps to add the RequiredFieldValidator controls:
Select Project, Add Existing Item. Be sure to change the Files of Type
combo box to "All Files (*.*)".
Add the EmpMaint.* files from the Jumpstart\ValidationControls folder.
There should be three files: EmpMaint.aspx, EmpMaint.aspx.resx, and
EmpMaint.aspx.vb.
Now that you've added the form to your project, double-click the
EmpMaint.aspx file to display the form.
Place your cursor to the right of the First Name text box.
In the Toolbox, double-click the RequiredFieldValidator control to add it
adjacent to the text box.
Repeat this for the Last Name, Birth Date, and Hire Date text boxes.
Set the properties for the new controls as shown in Table 8.2.
Table 8.2. Set These RequiredFieldValidator Properties Control Property
Value
RequiredFieldValidator1 ControlToValidate txtFirst
ErrorMessage First Name must be filled in
RequiredFieldValidator2 ControlToValidate txtLast
ErrorMessage Last Name must be filled in
RequiredFieldValidator3 ControlToValidate txtBirthdate
ErrorMessage Birth Date must be filled in
RequiredFieldValidator4 ControlToValidate txtHireDate
ErrorMessage Hire Date must be filled in
To test your page, right-click the page in the Solution Explorer window and
then select Build and Browse from the context menu. Without entering any
data, click Save. You should see the appropriate error messages appear next
to each text box. Try it again, this time entering some data into some of
the text boxes, and verify that the controls validate correctly.
Although you didn't take advantage of it here, the RequiredFieldValidator
control doesn't actually require you to supply a value梩hat's not how it
works. Actually, the RequiredFieldValidator control invalidates its
associated control if the value in that control isn't different from the
value in the InitialValue property of the RequiredFieldValidator control.
For example, you may want to have the text "Enter a value" in a text box,
and leaving this text intact isn't valid. Placing "Enter a value" into the
InitialValue property of the RequiredFieldValidator control associated with
the text box will ensure that users modify the value of the text box. In
this case, the validator isn't verifying that the user entered a value but
that the user entered a value that is different from the initial value. The
default value of the RequiredFieldValidator's InitialValue field is an
empty string, so by default, the validator forces users to enter a value
that's different from its default梐n empty string.
NOTE
Try posting the page back (click Save) with invalid data on the page. You
won't be able to梩he page simply won't post back when it contains invalid
data.