第6章web页面的有效性检验6.1验证控件概念•检验控件数据是否在许可的范围内•客户端验证(缺省)–%@PageClientTarget=“UpLevel”%–.net会在网页上插入Jscript代码–优点:快•服务端验证–%@PageClientTarget=“DownLevel”%–优点:安全验证控件分类•六个验证控件–必须输入验证asp:RequiredFieldValidator–比较验证asp:CompareValidator–范围验证asp:RangeValidator–表达式验证asp:RegularExpressionValidator–自定义asp:CustomValidator–验证总结asp:ValidationSummary页面通过验证的判断•页面所有控件验证通过,则有下式成立–Page.IsValid==true•例:if(Page.IsValid)//页面通过验证else//页面没通过验证验证组•属性ValidationGoup在下列情况下使用–当一组控件需要验证,而另一些控件不需要验证–控件在不同情况下,验证要求不同•例:本章练习题3验证控件具有的共同属性•IsValid–true:控件验证通过,控件的IsValid==true,•ControlToValidate–对哪个控件验证•Text–出错误时显示的文本•Enabled–是否启用验证•ErrorMessage–出错误时显示的文本•Display=(Dynamic,Static,None)–显示信息的方式•Dynamic不占空间•Static占空间•None不显示例:06-01.aspxvoidbtnClick(objectsender,EventArgse){if(IsValid)//如果验证没通过,则页面无效Response.Redirect(xxx.aspx?userName=+txt.Text);}username:asp:TextBoxID=txtrunat=server/asp:RequiredFieldValidatorID=rfvrunat=serverControlToValidate=txtErrorMessage=mustinput/br/asp:ButtonID=btnrunat=serverText=submitOnClick=btnClick/6.2必须输入验证•被验证的控件内必须输入数据,否则显示出错•格式–asp:RequiredFieldValidatormessage–/asp:RequiredFieldValidator例•例:06-02.aspx–对文本框和下拉框进行必填验证6.3比较验证•输入控件的值同常量或同其他控件比较•格式–asp:CompareValidatormessage–/asp:CompareValidator同常量比较•比较验证控件的属性–valueToCompare比较的值–Operator比较运算符,可取值•Equal•NotEqual•GreaterThan•LessThanEqual–Type比较的数据类型•String•Integer•Double•Date例06-03.aspx•文本框内必须输入一个大于等于0的整数–asp:textboxid=“text1”runat=“server”/–asp:comparevalidatorid=“cv”runat=“server”controltovalidate=“text1”errormessage=“not0”operator=“greatethanequal”type=“integer”valuetocompare=“0”/同另一个控件比•例:06-04.aspx•市场价asp:textboxid=“text1”../•会员价asp:textboxid=“text2”../•asp:comparevalidatorid=“cv”runat=“server”controltocompare=“text1”contrltovalidator=“text2”operator=“lessthanequal”type=“double”errormessage=“会员价not市场价”/•验证text2,同控件text1比较,text2值要”小于等于”text1检验数据类型•日期:asp:textboxid=“text1”runat=“server”/•asp:comparevalidatorid=“cv”runat=“servercontroltovalidate=“text1”errormessage=“格式"yyyy-mm-dd"”operator=“datatypecheck”type=“date”/–输入text1的数据必须能转换成日期类型–显示格式文本中含双引号,用"表示–06-04-1.aspx6.4范围验证•检验控件的数据是否在一定的范围内•格式–asp:RangeValidatormessage–/asp:RangeValidator例:06-05.aspx•输入文本框数据在1-100之间•asp:textboxid=“text1”runat=“server”/•asp:rangeValidatorid=“rv”runat=“server”controltovalidate=“text1”type=“double”maximumvalue=“100”minimumvalue=“1”errormessage=“1-100”/6.5正则表达式验证•格式–asp:RegularExpressionValidatormessage–/asp:RegularExpressionValidator•属性–ValidationExpression=“正则表达式”•正则表达式–用一串字符(普通字符和元字符)描述数据的规则–如:ValidationExpression=“\w#\.NET”•合法的数据有:C#.NET,J#.NET,c#.NET–元字符:描述匹配的字符如:“\w”匹配任何字符–“\.”:将特殊意义的”.”变成普通字符正则表达式常用的元字符标记.单字符*{0,}多字符\d[0-9]匹配0-9单个数字|或[a-z]匹配单个小写字母[^a-z]匹配单个除小写字母外的字符{3,7}重复3到7次正则表达式例:•小写字母开头的任意2个字符或大写字母开头的任意4个字符–“[a-z].|[A-Z]…”•5位数字–“\d{5}”•3个以上由大小写字母、数字、符号“_”(下划线)、“-”(中划线)以及“.”组成的字符串–“[A-Za-z0-9_\-\.]{3,}”例•[0-9]{6}或者\d{6}–6个数字•.{0,}–任意多个字符•[^0-9]{0,}–除数字外任意多个字符•.{1,}@.{1,}\.{a-zA-Z}{2,3}–Email地址例:06-06.aspx•密码框内输入6个以上的数字–asp:textboxid=“text1”runat=“server”textmode=“password”/–asp:regularExpressionValidatorid=“rev”runat=“server”controlToValidate=“text1”validationExpression=“\d{6,}”errormessage=“密码不少于6个数字”/6.6自定义验证控件•格式–asp:CustomValidatormessage–/asp:CustomValidator–通过自定义方法验证,可以设置参数影响Page.IsValid的值–服务端验证事件•OnServerValidate例:06-07.aspx•设计输入用户名的文本框,规定:–必须输入–不能使用”user“等一些保留字控件定义说明:用户名:asp:textboxid=txtnamerunat=server/不能用userasp:RequiredFieldValidatorID=rfvControlToValidate=txtnamerunat=servererrorMessage=mustinput/asp:CustomValidatorid=cvrunat=servercontroltovalidate=txtnameonservervalidate=validateName/asp:CustomValidatorbr/asp:buttonid=btnrunat=serveronclick=btnClicktext=验证/br/asp:labelid=labrunat=server/代码voidvalidateName(objecto,ServerValidateEventArgse){if(txtname.Text!=user){lab.Text=有效;e.IsValid=true;//Page.IsValid只读,不能修改}else{lab.Text=无效;e.IsValid=false;}}voidbtnClick(objecto,EventArgse){Response.Write(Page.IsValid);}6.7验证总结•不对具体的控件验证–仅显示所有验证控件的errormessage属性的值•格式–asp:ValidationSummary…–/asp:ValidationSummary例:06-09.aspxasp:validationsummaryid=vsrunat=serverheadertext=有下面的输入错误showsummary=truedisplaymode=list/•说明–headerText属性可包含html标记–displayMode属性有:list,bulletlist,singleParagraph–可以关闭单个验证控件的显示display=“none”练习•编写,要求验证–用户名必须要输入,–新密码必须要输入–重输入的密码必须同新密码阅读程序:购物•购物车的应用(Session对象)–login.aspx用户登录–shop1.aspx店铺1–shop2.aspx店铺2–cart.aspx购物车的管理•练习:试增加一个店铺3或者计算购物总价