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.
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. |
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 that'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 an empty string.
Try posting the page back (click Save) with invalid data on the page. You won't be able to the page simply won't post back when it contains invalid data.