1. Trang chủ
  2. » Công Nghệ Thông Tin

Professional ASP.NET 3.5 in C# and Visual Basic Part 26 pdf

10 317 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 281,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The RangeValidator Server Control The RangeValidator control is quite similar to that of the CompareValidator control, but it makes sure that the end-user value or selection provided is

Trang 1

associates itself with one of the form elements on the page In this case, you need only a single

CompareValidator control on the page because a single comparison is made In this example, you are

making a comparison between the value ofTextBox2and that ofTextBox1 Therefore, you use the

ControlToCompareproperty This specifies what value is compared toTextBox2 In this case, the value

isTextBox1

It’s as simple as that If the two text boxes do not match after the page is posted by the end user, the value

of theTextproperty from the CompareValidator control is displayed in the browser An example of this

is shown in Figure 4-2

Figure 4-2

Validating Against Constants

Besides being able to validate values against values in other controls, you can also use the Compare

Validator control to make comparisons against constants of specific data types For example, suppose

you have a text box on your registration form that asks for the age of the user In most cases, you want to

get back an actual number and not something such asaaorbbas a value Listing 4-9 shows you how

to ensure that you get back an actual number

Listing 4-9: Using the CompareValidator to validate against constants

Age:

<asp:TextBox ID="TextBox1" Runat="server" MaxLength="3">

</asp:TextBox>

&nbsp;

<asp:CompareValidator ID="CompareValidator1" Runat="server"

Text="You must enter a number"

ControlToValidate="TextBox1" Type="Integer"

Operator="DataTypeCheck"></asp:CompareValidator>

Trang 2

In this example, the end user is required to enter in a number into the text box If she attempts to bypass the validation by entering a fake value that contains anything other than a number, the page is identified

as invalid, and the CompareValidator control displays the value of theTextproperty

To specify the data types that you want to use in these comparisons, you simply use theTypeproperty TheTypeproperty can take the following values:

❑ Currency

❑ Double

❑ Integer

❑ String

Not only can you make sure that what is entered is of a specific data type, but you can also make sure

that what is entered is valid when compared to specific constants For instance, you can make sure what

is entered in a form element is greater than, less than, equal to, greater than or equal to, or less than or

equal to a specified value An example of this is illustrated in Listing 4-10

Listing 4-10: Making comparisons with the CompareValidator control

Age:

<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>

&nbsp;

<asp:CompareValidator ID="CompareValidator1" Runat="server"

Operator="GreaterThan" ValueToCompare="18"

ControlToValidate="TextBox1"

Text="You must be older than 18 to join" Type="Integer">

</asp:CompareValidator>

In this case, the CompareValidator control not only associates itself with theTextBox1control and

requires that the value must be an integer, but it also uses theOperatorand theValueToCompare prop-erties to ensure that the number is greater than 18 Therefore, if the end user enters a value of 18 or less, the validation fails, and the page is considered invalid

TheOperatorproperty can take one of the following values:

❑ Equal

❑ NotEqual

❑ GreaterThan

❑ GreaterThanEqual

❑ LessThan

❑ LessThanEqual

❑ DataTypeCheck

Trang 3

TheValueToCompareproperty is where you place the constant value used in the comparison In the

preceding example, it is the number18

The RangeValidator Server Control

The RangeValidator control is quite similar to that of the CompareValidator control, but it makes sure

that the end-user value or selection provided is between a specified range as opposed to being just greater

than or less than a specified constant For an example of this, go back to the text-box element that asks for

the age of the end user and performs a validation on the value provided This is illustrated in Listing 4-11

Listing 4-11: Using the RangeValidator control to test an integer value

Age:

<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>

&nbsp;

<asp:RangeValidator ID="RangeValidator1" Runat="server"

ControlToValidate="TextBox1" Type="Integer"

Text="You must be between 30 and 40"

MaximumValue="40" MinimumValue="30"></asp:RangeValidator>

In this example, this page consists of a text box asking for the age of the end user The RangeValidator

control makes an analysis of the value provided and makes sure the value is somewhere in the range of

30 to 40 This is done using theMaximumValueandMinimumValueproperties The RangeValidator control

also makes sure what is entered is an integer data type It uses theTypeproperty, which is set toInteger

The collection of screenshots in Figure 4-3 shows this example in action

Figure 4-3

Trang 4

As you can see from the screenshots in Figure 4-3, a value of less than 30 causes the RangeValidator

control to fire, as does a number greater than 40 A value that is somewhere between 30 and 40 (in this

case 34) conforms to the validation rule of the control

The RangeValidator control is not only about validating numbers (although it is most often used in this fashion) It can also be about validating a range of string characters as well as other items, including

calendar dates By default, theTypeproperty of any of the validation controls is set toString You can use the RangeValidator control to make sure what is entered in another server control (such as a calendar control) is within a certain range of dates

For example, suppose that you are building a Web form that asks for a customer’s arrival date, and the arrival date needs to be within two weeks of the current date You can use the RangeValidator control to test for these scenarios quite easily

Because the date range that you want to check is dynamically generated, you assign theMaximumValue

andMinimumValueattribute programmatically in thePage_Loadevent In the Designer, your sample page for this example should look like Figure 4-4

Figure 4-4

Trang 5

The idea is that the end user will select a date from the Calendar control, which will then populate the

TextBox control Then, when the end user clicks the form’s button, he is notified if the date selected is

invalid If the date selected is valid, that date is presented through the Label control on the page The

code for this example is presented in Listing 4-12

Listing 4-12: Using the RangeValidator control to test a string date value

VB

<%@ Page Language="VB" %>

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString() RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString() End Sub

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, _

ByVal e As System.EventArgs)

TextBox1.Text = Calendar1.SelectedDate.ToShortDateString() End Sub

Protected Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs)

If Page.IsValid Then Label1.Text = "You are set to arrive on: " & TextBox1.Text End If

End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Date Validation Check</title>

</head>

<body>

<form id="form1" runat="server">

Arrival Date:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp;

<asp:RangeValidator ID="RangeValidator1" runat="server"

Text="You must only select a date within the next two weeks."

ControlToValidate="TextBox1" Type="Date"></asp:RangeValidator><br />

<br />

Select your arrival date:<br />

<asp:Calendar ID="Calendar1" runat="server"

OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>

&nbsp;

<br />

<asp:Button ID="Button1" runat="server" Text="Button"

OnClick="Button1_Click" />

<br />

<br />

<asp:Label ID="Label1" runat="server"></asp:Label>

Trang 6

</body>

</html>

C#

<%@ Page Language="C#" %>

<script runat="server">

protected void Page_Load(object sender, EventArgs e)

{

RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();

RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();

}

protected void Calendar1_SelectionChanged(object sender, EventArgs e)

{

TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();

}

protected void Button1_Click(object sender, EventArgs e)

{

if (Page.IsValid) {

Label1.Text = "You are set to arrive on: " + TextBox1.Text.ToString();

} }

</script>

From this code, you can see that when the page is loaded, theMinimumValueandMaximumValueattributes are assigned a dynamic value In this case, theMinimumValuegets the

DateTime.Now.ToShortDate-String()value, while theMaximumValuegets a date of 14 days later

After the end user selects a date, the selected date is populated in theTextBox1control using the

Calendar1_SelectionChangedevent After a date is selected and the button on the page is clicked, the

Button1_Clickevent is fired and the page is checked for form validity using thePage.IsValidproperty

An invalid page will give you the result shown in Figure 4-5

The RegularExpressionValidator Server Control

One exciting control that developers like to use is the RegularExpressionValidator control This control

offers a lot of flexibility when you apply validation rules to your Web forms Using the RegularExpres-sionValidator control, you can check a user’s input based on a pattern that you define using a regular

expression

This means that you can define a structure that a user’s input will be applied against to see if its structure matches the one that you define For instance, you can define that the structure of the user input must

be in the form of an e-mail address or an Internet URL; if it doesn’t match this definition, the page is

considered invalid Listing 4-13 shows you how to validate what is input into a text box by making sure

it is in the form of an e-mail address

Trang 7

Figure 4-5

Listing 4-13: Making sure the text-box value is an e-mail address

Email:

<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>

&nbsp;

<asp:RegularExpressionValidator ID="RegularExpressionValidator1"

Runat="server" ControlToValidate="TextBox1"

Text="You must enter an email address"

ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">

</asp:RegularExpressionValidator>

Just like the other validation server controls, the RegularExpressionValidator control uses the

ControlTo-Validateproperty to bind itself to the TextBox control, and it includes aTextproperty to push out the

error message to the screen if the validation test fails The unique property of this validation control is

theValidationExpressionproperty This property takes a string value, which is the regular expression

you are going to apply to the input value

Visual Studio 2008 makes it a little easier to use regular expressions through the use of the Regular

Expression Editor This editor provides a few commonly used regular expressions that you might want

to apply to your RegularExpressionValidator To get at this editor, you work with your page from Design

view Be sure to highlight theRegularExpressionValidator1server control in this Design view to see

the control’s properties In the Property window of Visual Studio, click the button found next

Trang 8

to theValidationExpressionproperty to launch the Regular Expression Editor This editor is shown in Figure 4-6

Figure 4-6

Using this editor, you can find regular expressions for things like e-mail addresses, Internet URLs, zip

codes, phone numbers, and social security numbers In addition to working with the Regular Expression Editor to help you with these sometimes complicated regular expression strings, you can also find a

good-sized collection of them at an Internet site called RegExLib found atwww.regexlib.com

The CustomValidator Server Control

So far, you have seen a wide variety of validation controls that are at your disposal In many cases, these validation controls address many of the validation rules that you want to apply to your Web forms

Sometimes, however, none of these controls works for you, and you have to go beyond what they offer This is where the CustomValidator control comes into play

The CustomValidator control allows you to build your own client-side or server-side validations that can then be easily applied to your Web forms Doing so allows you to make validation checks against values

or calculations performed in the data tier (for example, in a database), or to make sure that the user’s

input validates against some arithmetic validation (for example, determining if a number is even or odd) You can do quite a bit with the CustomValidator control

Using Client-Side Validation

One of the worthwhile functions of the CustomValidator control is its capability to easily provide custom client-side validations Many developers have their own collections of JavaScript functions they employ

in their applications, and using the CustomValidator control is one easy way of getting these functions

implemented

Trang 9

For example, look at a simple form that asks for a number from the end user This form uses the

CustomValidator control to perform a custom client-side validation on the user input to make sure that

the number provided is divisible by 5 This is illustrated in Listing 4-14

Listing 4-14: Using the CustomValidator control to perform client-side validations

VB

<%@ Page Language="VB" %>

<script runat="server">

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Label1.Text = "VALID NUMBER!"

End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>CustomValidator</title>

<script type="text/javascript">

function validateNumber(oSrc, args) { args.IsValid = (args.Value % 5 == 0);

}

</script>

</head>

<body>

<form id="form1" runat="server">

<div>

<p>

Number:

<asp:TextBox ID="TextBox1"

Runat="server"></asp:TextBox>

&nbsp;

<asp:CustomValidator ID="CustomValidator1"

Runat="server" ControlToValidate="TextBox1"

Text="Number must be divisible by 5"

ClientValidationFunction="validateNumber">

</asp:CustomValidator>

</p>

<p>

<asp:Button ID="Button1" OnClick="Button1_Click"

Runat="server" Text="Button"></asp:Button>

</p>

<p>

<asp:Label ID="Label1" Runat="server"></asp:Label>

</p>

</div>

</form>

</body>

</html>

Trang 10

<%@ Page Language="C#" %>

<script runat="server">

protected void Button1_Click(Object sender, EventArgs e) {

Label1.Text = "VALID NUMBER!";

}

</script>

Looking over this Web form, you can see a couple of things happening First, it is a simple form with only

a single text box requiring user input The user clicks the button that triggers theButton1_Clickevent, which in turn populates theLabel1control on the page It carries out this simple operation only if all the validation checks are performed and the user input passes these tests

One item that is different about this page is the inclusion of the second<script>block found within

the<head>section This is the custom JavaScript Note that Visual Studio 2008 is very friendly toward these kinds of constructions, even when you are switching between the Design and Code views of the

page — something previous Visual Studio editions were rather poor at dealing with This JavaScript

function —validateNumber— is shown here:

<script type="text/javascript">

function validateNumber(oSrc, args) {

args.IsValid = (args.Value % 5 == 0);

}

</script>

This second<script>section is the client-side JavaScript that you want the CustomValidator control

to use when making its validation checks on the information entered into the text box The JavaScript

functions you employ are going to use theargs.IsValidproperty and set this property to eithertrue

orfalsedepending on the outcome of the validation check In this case, the user input (args.Value) is checked to see if it is divisible by5 The Boolean value returned is then assigned to theargs.IsValid

property, which is then used by the CustomValidator control

The CustomValidator control, like the other controls before it, uses theControlToValidateproperty

to associate itself with a particular element on the page The property that you are interested in here is

theClientValidationFunctionproperty The string value provided to this property is the name of the client-side function that you want this validation check to employ when the CustomValidator control is triggered In this case, it isvalidateNumber:

ClientValidationFunction="validateNumber"

If you run this page and make an invalid entry, you produce the result illustrated in Figure 4-7

Using Server-Side Validation

Now let’s move this same validation check from the client to the server The CustomValidator control

allows you to make custom server-side validations a reality as well You will find that creating your

server-side validations is just as easy as creating client-side validations

Ngày đăng: 05/07/2014, 18:20

TỪ KHÓA LIÊN QUAN