| 域名空间 下载中心 社区论坛 信息公告 MY小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
深入讲解 ASP+ 验证(三)http://www.iyit.net 日期:2006-6-12 2:00:32 来源: 点击: |
如果您的页面启用了客户端验证,则在往返过程中会发生完全不同的事件序列。客户端的验证使用客户端 JScript® 实现。实现该验证不需要任何二进制组件。 尽管 JScript 语言的标准化做得很好,但是用于与浏览器中的 HTML 文档交互的文档对象模型 (Document Object Model, DOM) 没有广泛采用的标准。因此,客户端的验证只在 Internet Explorer 4.0 和更高版本中进行,因为该验证的对象是 Internet Explorer DOM。 从服务器的角度来说,客户端的验证只意味着验证控件将不同的内容发送到 HTML 中。除此之外,其事件序列完全相同。服务器端的检查仍然执行。尽管看起来似乎多余,但是却十分重要,因为: 某些验证控件可能不支持客户端脚本。有一个很好的例子:如果要同时使用 CustomValidator 和服务器验证函数,但是没有客户机验证函数。 关于脚本库 因为验证 Web 控件脚本在脚本库中,所以不必将所有客户端验证的代码直接发送到页面中,尽管表面上似乎是这样做的。主要的脚本文件引用类似如下所示: <script language="javascript" 默认情况下,脚本文件将安装在 "_aspx" 目录中默认的根目录下,并使用相对于根的脚本 include 指令调用,该指令以正斜线开头。该引用表明每个单独的对象不必包含脚本库,同一台计算机上的所有页面可以引用同一个文件。您会注意到,该路径中还有一个公用的语言运行时版本号,以便不同的运行时版本可以在同一台计算机上运行。 如果查看一下您默认的虚拟根目录,您会找到该文件并查看其中的内容。这些文件的位置在 config.web 文件中指定。config.web 文件是一个用于大多数 ASP+ 设置的 XML 文件。以下是该文件中位置的定义: <webcontrols 鼓励您阅读该脚本,以便深入了解发生的事件。不过,建议您不要修改这些脚本,因为它们的功能与特定的运行时版本紧密相连。在运行时版本更新时,这些脚本可能也需要相应的更新,您将或者放弃更改,或者面临脚本不工作的问题。如果特定项目必须更改这些脚本,先备份这些脚本,然后将您的项目指向备份文件,方法是使用私有的 config.web 文件替代这些文件的位置。如果字符串中包含格式指令 "{0}",运行时版本号将替换该指令。最好将该位置更改为一个相对引用或绝对引用。 禁用客户端的验证 有时您可能不希望进行客户端验证。如果输入字段的数目很少,客户端验证可能用处不大。您毕竟每次都要有一个需要往返服务器一次的逻辑。您会发现客户机上动态出现的信息对您的布局会有负面影响。 要禁用客户端验证,应使用 Page 指令 "clienttarget=downlevel"。该指令类似以下 ASPX 文件的开头: <%@ Page Language="c#" clienttarget=downlevel %> 该指令的默认值为 "auto",表示您只对 Microsoft Internet Explorer 4.0 或更高版本进行客户端验证。 注意: 不幸的是,在 Beta 1 中,该指令并非仅仅是禁用验证,同时还会使所有 Web 控件使用 HTML 3.2 标记来处理,这可能会产生意想不到的结果。最终版本提供了更好的方法来控制这个问题。 客户端事件序列 该序列是在运行包含客户端验证的页面时发生的事件序列: 在页面载入浏览器时,需要对每个验证控件进行一些初始化。这些控件作为 <span> 标记发送,其 HTML 特性与服务器上的特性最接近。最重要的是,此时会将验证器引用的所有输入元素“挂接”。被引用的输入元素将修改其客户端事件,以便在每次输入更改时调用验证例程。 客户端 API 有一个可以在客户机上使用的小型 API,以便在您自己的客户端代码中实现各种效果。因为某些例程不可能隐藏,所以理论上讲,您可以利用客户端验证脚本所定义的所有变量、特性和函数。不过,其中许多都是可以更改的实施细节。以下总结了我们鼓励您使用的客户端对象。 表 3. 客户端对象 名称 类型 说明
您经常需要执行的一项任务是在页面上添加“取消”按钮或导航按钮。在这种情况下,即使页面上有错误,您可能也希望使用该按钮提交页面。因为客户端按钮 "onclick" 事件在表单的 "onsubmit" 事件之前发生,因此可能会避免提交检查,并绕过验证。以下说明如何使用 HTML Image 控件作为“取消”按钮完成该任务: <input type=image runat=server 使用 Button 或 ImageButton 控件执行该任务会出现一些混淆,因为 "onclick" 事件假定为同名的服务器端事件。您应在客户端脚本中设置该事件: <asp:ImageButton runat=server id=cmdImgCancel <script language="javascript"> 解决该问题的另一种方法是:对“取消”按钮进行一定的设置,使其在返回时不会触发客户端脚本中的提交事件。HtmlInputButton 和 LinkButton 控件就是这样的例子。 特殊效果 另一种常见的要求是:在出错时,除了由验证器自身显示的错误信息外,还需要其它一些效果。在这种情况下,您所作的任何修改均需在服务器或客户机上同时进行。假设您需要加入一个 Label,根据输入是否有效来更改颜色。以下是如何在服务器上实现该任务: public class ChangeColorPage : Page { 上述方法一切都很完美,但是,只要您如上所述修改验证,就会发现除非您在客户机上进行了相同的操作,否则看起来会非常不一致。验证框架会使您避免许多这种双重效果,但是无法避免您必须在客户机和服务器上同时实现的其它效果。以下是在客户机上执行同一任务的片段: <asp:Label id=lblZip runat=server <script language=javascript> Beta 1 客户端 API 对于 Beta 1 版,一些可以从客户端脚本调用的函数会造成其它一些情况。 表 4. 从客户端脚本调用的函数 名称 说明
以下是上面的示例加上一个字段,该字段只在取消选中某个复选框时才会进行验证。 public class Conditional : Page { 以下是客户端等效的代码: <input type=checkbox runat=server id=chkSameAs 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:深入讲解 ASP+ 验证(四) 下一篇:深入讲解 ASP+ 验证(二) 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||