ASP。NET中以什么方式进行数据验证? 5

 我来答
boyontrain
推荐于2017-12-16 · TA获得超过251个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:134万
展开全部
在ASP中进行表单数据验证时,通常开发者必须自己编写一套验证的规则,然后自己将这些代码拷贝到ASP代码中对表单进行验证。这样进行验证的方式实在不太方便,幸运的是,ASP.NET解决了这个问题,这就是数据验证Web控件。

数据验证控件是ASP.NET中专门用来验证表单用户输入的控件。比如, RequiredFieldValidation就是一个专门用来验证用户是否已经输入的控件,使用这个控件,可以保证用户一定输入了表单的某个表单项(比如数据输入框)。另外,ASP.NET还专门提供了以下数据验证控件:

1. RequiredFieldValidator:检查用户是否输入;

2. CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大、等于等;

3. RangeValidator:检查用户输入是否在某一指定范围;

4. RegularExpressionValidator:检查用户输入是否符合某一指定的正则表达式要求;

5. CustomValidator: 检查用户输入是否符合开发者指定的验证逻辑规则。

本文的目的不是在于讨论以上所有控件的用法,如果希望了解其他控件,可以参看:

http://samples.gotdotnet.com /quickstart /aspplus/doc /webvalidation.aspx。

CustomValidator控件概述

简单地使用前面提到的前四个数据验证控件,亏磨蠢就可以实现我们一般开发的大部分数据表单的验证要求。然而,有时候我们需要验证一些比较复杂的表单。想像一下,我们有一个比较复杂的调查表,该调查表包含一个有很多单选按钮和多选按钮的表单,一些多选按钮和个人的爱好相对应,比如游泳、体育、阅读等,调查表希望被调查人选择自己的所有爱好。在这些选项下面,提示如下文字:“如果你提示有体育和游泳两种爱好,请选择您什么时候开始学习游泳”,在这些文字下方放置一些标识年龄段的单选按钮,这些按钮是否有效取决于我们在前面提到的多选按钮的选择情况。在以上的验证情况中,我们就要使用到CustomValidator数据验证控件。

在所有的ASP.NET数据验证控件中,都有一个“ControlToValidate”的控件属性需要设置,这个属性用来指定表单中需要验证的表单项。在CustomValidator数据验证控件中,需要做以下事情:

1. 读取需要CustomValidator验证的表单项值;

2. 执行验证操作;

3. 决定被验证表单项是否符合验证要求。

在其他内建控件中,以上步骤用户是不知道也不要理睬的,但是,在使用CustomValidator的时候,我们需要自己动手实现以上步骤。为了实现以上步骤,我们需要编写一个服务器端数据验证函数,该函数的样式如下:

Sub FunctionName(sender as Object, args as ServerValidateEventArgs)

……

End Sub

注意以上函数的args参数,它是FunctionName函数的游纯第二个参数,这个参数有以下两个属性:

1. Value:被验证数据表单的值。

2. IsValid:验证是否通过。如果通过,IsValid的值是True; 如果没有通过,其值为False。

在使用CustomValidator的时候,我们不但要设置销陪“ControlToValidate”属性,我们还必须设置OnServerValidate事件来处理服务器端的数据验证动作。

建立一个简单的

CustomValidator控件

假设现在建立一个与数学有关的网站,在这个网站,我们要求浏览者提供自己喜欢的质数,以此来提高我们网站的访问量。在ASP.NET中,没有一个现成的可以专门验证质数的服务器端数据验证控件,这样,我们就有必要用到CustomValidator控件。

以下例子用来验证用户输入的数是不是质数。在这个表单中,有一个用户输入数据的TextBox控件和一个Button控件,还有用于验证是不是质数的CustomValidator控件,和两个用于保证用户输入为正数的CompareValidator控件。

< script language=“vb” runat=“server” >

Sub btnSubmit_Click(sender as Object, e as EventArgs)

If Page.IsValid then

Response.Write(“< font color=““red””>

< i>”& txtPrimeNumber.Text & “is, indeed, a good prime number.

< /i>< /font>”)

Else

Response.Write(“< font color=““red””>

< i>” & txtPrimeNumber.Text & “is < b>not< /b>

a prime number.< /i>< /font>”)

End If

End Sub

Sub PrimeNumberCheck(sender as Object, args as

ServerValidateEventArgs)

Dim iPrime as Integer = Cint(args.Value),

iLoop as Integer, iSqrt as Integer = CInt(Math.Sqrt(iPrime))

For iLoop = 2 to iSqrt

If iPrime mod iLoop = 0 then

args.IsValid = False

Exit Sub

End If

Next

args.IsValid = True

End Sub

< /script>

< form method=“post” runat=“server”>

Enter your favorite prime number:

< asp:textbox id=“txtPrimeNumber” runat=“server” />

< %-- 建立CustomValidator 控件 --%>

< asp:CustomValidator runat=“server”

id=“custPrimeCheck”

ControlToValidate=“txtPrimeNumber”

OnServerValidate=“PrimeNumberCheck”

ErrorMessage=“Invalid Prime Number”/>

< %-- 建立两个CompareValidator控件:第一个保证输入为数字;

第二个保证输入为正数 --%>

< asp:CompareValidator runat=“server”

id=“compPrimeNumber”Operator=“DataTypeCheck”

Type=“Integer”

Display=“Dynamic” ControlToValidate=

“txtPrimeNumber”ErrorMessage =

“You must enter an integer value.”/>

< asp:CompareValidator runat=“server”

id=“compPrimeNumberPositive”Operator=“GreaterThan”

Type=“Integer”

Display=“Dynamic” ValueToCompare=“0”

ControlToValidate=“txtPrimeNumber”

ErrorMessage =“You must enter a value

greater than zero.”/>

< p>< asp:button id=“btnSubmit” runat=

“server”OnClick=“btnSubmit_Click” Text=“Submit” />

< /form>

如果对判定质数不是太熟悉,可能对于以上的PrimeNumberCheck 事件处理感觉比较迷惑。首先,将用户在txtPrimeNumber输入的数据通过事件的args.value传送给txtPrimeNumber,然后,将用户的输入开平方根,再将用户输入的数字除以从2到刚才算出的平方根之间的每一个数字。如果出现结果为零的情况,说明用户输入的数字不是质数,设置 args.isValid为False; 如果全部为零,说明用户输入合法,设置args.isValid为True。

客户端验证

ASP.NET内建数据验证控件的一大特点就是它们的所有验证都是在客户端进行的,不需经过服务器端,而CustomValidator控件的错误验证完全是通过服务器端实现的。必须意识到的一点是,不管是否通过客户端实现数据验证,服务器端的数据验证是一定会产生的。增加客户端验证的功能,只是让我们的数据验证控件更加友好。

为了实现客户端验证的功能,我们必须使用JavaScript或者VBScript写一个脚本函数,因为VBScript只支持IE浏览器,因此,这里我们采用JavaScript来编写这个函数:

< script language=“JavaScript” >

< !--

function CheckPrime(sender, args)

{ var iPrime = parseInt(args.Value);

var iSqrt = parseInt(Math.sqrt(iPrime));

for (var iLoop=2; iLoop< =iSqrt; iLoop++)

if (iPrime % iLoop == 0)

{ args.IsValid = false;

return;

}

args.IsValid = true;

}

// -->

< /script >

在这个例子里面,我们输入数字6,然后按“Tab”按钮。在高版本的浏览器里面,我们将看到来自CustomValidator控件的错误信息,这样,我们的CustomValidator控件也就有了客户端验证功能。在以上代码中,可能已经注意到我们并没有定义数据sender和args的类型,因为在脚本语言中,是没有严格的数据类型定义的。

为了实现客户端数据验证,惟一要做的就是在CustomValidator控件定义中加入以下语句:ClientValidationFunction=“CheckPrime”,这里,其实就是指定自定义验证控件的客户端验证函数。在这个例子里,前面定义的“CheckPrime”函数就是客户端验证函数。

总结
上面我们介绍了ASP.NET中几乎是功能最灵活的数据验证控件CustomValidator的使用,介绍了CustomValidator控件的服务器端验证和客户端验证的实现。尽管在实际的开发工作中,可能我们使用ASP.NET的内置数据验证控件几乎完全可以满足我们的开发要求,但是若能了解CustomValidator控件的使用和特点将会更有利于解决在工作中碰到的数据验证问题。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
ccgtt
2006-05-17 · TA获得超过1233个赞
知道大有可为答主
回答量:2821
采纳率:0%
帮助的人:1181万
展开全部
验证用户名还是什么? 自己写判断语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老赵说高考
2006-05-17 · 和老赵一起聊高考
个人认证用户
老赵说高考
采纳数:2 获赞数:400

向TA提问 私信TA
展开全部
要验证什么呢?自己写判断语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式