博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 2.0 验证控件新的功能
阅读量:6397 次
发布时间:2019-06-23

本文共 3475 字,大约阅读时间需要 11 分钟。

        在1.1中没有一中比较好的方法可以讲各个验证控件组合在一起,以便页面的一个部分上的验证程序可以重写该页面其他部分的验证程序,并且无论其他验证程序的状态如何,都可以使回发发生。

         该问题由AalidationGroups1.aspx阐明,它包含在您可以针对本文下载的示例中。页面设计者预计用户能够填写一组TextBox并回发到服务器,而不必同时填写另一组,但它并不按此方式工作。除非所有输入字段都被填充,否则验证程序将被抱怨不休
       Asp.Net 2.0中的验证组功能一劳永逸地解决了该问题,现在,可以使用ValidatationGroup的属性来组合验证控件。可以用相同的方式,将按钮控件分配给组,并且当一个组中的所以验证程序都对输入感到满意是,他们才允许回发发生,当然,前提是回发是由验证同一组中的控件生成的。演示如下:

None.gif
<
html
>
None.gif  
<
body
>
None.gif    
<
form 
runat
="server"
>
None.gif      
<
h1
>
New Users
</
h1
>
None.gif      
<
table
>
None.gif        
<
tr
>
None.gif          
<
td
>
User Name
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="NewUserName"
 RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator 
ValidationGroup
="NewUsers"
None.gif            ControlToValidate
="NewUserName"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
>
Password
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="NewPassword1"
 TextMode
="Password"
None.gif            RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator 
ValidationGroup
="NewUsers"
None.gif            ControlToValidate
="NewPassword1"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
>
Retype Password
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="NewPassword2"
 TextMode
="Password"
None.gif            RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator 
ValidationGroup
="NewUsers"
None.gif            ControlToValidate
="NewPassword2"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
>
E-Mail Address
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="NewEMail"
 RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator 
ValidationGroup
="NewUsers"
None.gif            ControlToValidate
="NewEMail"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
></
td
>
None.gif          
<
td
><
asp:Button 
ValidationGroup
="NewUsers"
None.gif            Text
="Create Account"
 OnClick
="OnCreateAccount"
None.gif            RunAt
="server"
 
/></
td
>
None.gif          
<
td
></
td
>
None.gif        
</
tr
>
None.gif      
</
table
>
None.gif      
<
hr
>
None.gif      
<
h1
>
Existing Users
</
h1
>
None.gif      
<
table
>
None.gif        
<
tr
>
None.gif          
<
td
>
User Name
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="UserName"
 RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator
None.gif            
ValidationGroup
="ExistingUsers"
None.gif            ControlToValidate
="UserName"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
>
Password
</
td
>
None.gif          
<
td
><
asp:TextBox 
ID
="Password"
 TextMode
="Password"
None.gif            RunAt
="server"
 
/></
td
>
None.gif          
<
td
><
asp:RequiredFieldValidator
None.gif            
ValidationGroup
="ExistingUsers"
None.gif            ControlToValidate
="Password"
 ErrorMessage
="Required"
None.gif            RunAt
="server"
 
/></
td
>
None.gif        
</
tr
>
None.gif        
<
tr
>
None.gif          
<
td
></
td
>
None.gif          
<
td
><
asp:Button 
ValidationGroup
="ExistingUsers"
None.gif            Text
="Log In"
 OnClick
="OnLogIn"
 RunAt
="server"
 
/></
td
>
None.gif          
<
td
></
td
>
None.gif        
</
tr
>
None.gif      
</
table
>
None.gif    
</
form
>
None.gif  
</
body
>
None.gif
</
html
>
None.gif
ExpandedBlockStart.gif
<
script 
language
="C#"
 runat
="server"
>
ExpandedSubBlockStart.gif  
void OnCreateAccount (Object sender, EventArgs e) {}
ExpandedSubBlockStart.gif  
void OnLogIn (Object sender, EventArgs e) {}
None.gif
</
script
>
None.gif
None.gif

在CSDN上论坛上看到过这样的说法:ASP.NET的客户端验证不安全。然而实际上验证控件是在服务器端验证的,不管客户端是否发生了验证。而像Firefox这样的浏览器更是所有的验证都是在服务器上执行的。

    因为1.x版本的验证控件是用HTML自定义属性来实现的,而除IE及IE内核的浏览器外,这些特性是不被支持的,因此,在验证其它浏览器的数据时无论如何都只能返回服务器了。在2.0中,这个特性终于被修改了,虽然看起来有点傻傻的。是的,它确实像我们普通会javascript的人都会想到的一样,使用javascript为验证控件生成的span元素增加属性。但是,这么简单的改动却使得可以使用客户端验证的浏览器大大增加了(基本上都可以了)。

    而通过Page的属性ClientTarget可以设置所有的验证控件是否会在客户端验证。只要将这个属性设置为UpLevel就可以了,DownLevel下,所有的验证都只会在服务器上执行了。默认情况下,大多数浏览器都是会在客户端验证的,所以我并不知道它的这个属性是不是默认UpLevel了。当然,如果要为单独的一个或几个验证控件设置的话,那么还是使用原先的EnableClientScript。

    另外还增加了一个SetFoucsOnError属性。就是当出错的时候将焦点移到控件上。这样就不会使用户在点击了按钮之后因为没看到错误提示而在那发愣了。另外一个小东西就是CustomValidator增加了ValidateEmptyText属性来让用户自定义验证控件在值为空时也验证。

    下一个有用的特性是ValidationGroup属性,将你在一个按钮点击时要验证的控件设置为同一个组名吧,而另一个按钮要验证的设置为另一个名,这样就可以使点击一个按键时只发生期望的验证,而不是所有的验证,而不必在服务器端显示来控件。注意,按钮也应该设计ValidationGroup属性。

本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/27/263421.html,如需转载请自行联系原作者

你可能感兴趣的文章
九种 “姿势” 让你彻底解决跨域问题
查看>>
php中mysqli 处理查询结果集总结
查看>>
你不知道的JavaScript运算符
查看>>
小程序开发注意事项
查看>>
ECMAScript7规范中的instanceof操作符
查看>>
Hadoop HDFS原理分析
查看>>
【webpack4】基本配置和入门api
查看>>
css实现居中、自适应
查看>>
Rxjs 响应式编程-第一章:响应式
查看>>
CocosCreator中使用RSA公钥加密
查看>>
【丛林】HTML Table 表格浅谈(边框、隔行变色
查看>>
Mac使用ssh公钥登录Linux
查看>>
【跃迁之路】【514天】刻意练习系列273(2018.07.04)
查看>>
JS 多发票多金额分配
查看>>
Android Architecture Components Part1:Room
查看>>
一个前端菜鸟的成长历程
查看>>
计算机网络-(网络层)
查看>>
vue-cli 安装 报错 no such file or directory , access.问题解决。
查看>>
PHP 会话控制
查看>>
jquery源码分析
查看>>