用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心.Net

深入讲解 ASP+ 验证(三)

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-12 16:02:22
客户端的验证

如果您的页面启用了客户端验证,则在往返过程中会发生完全不同的事件序列。客户端的验证使用客户端 JScript® 实现。实现该验证不需要任何二进制组件。

尽管 JScript 语言的标准化做得很好,但是用于与浏览器中的 HTML 文档交互的文档对象模型 (Document Object Model, DOM) 没有广泛采用的标准。因此,客户端的验证只在 Internet Explorer 4.0 和更高版本中进行,因为该验证的对象是 Internet Explorer DOM。

从服务器的角度来说,客户端的验证只意味着验证控件将不同的内容发送到 HTML 中。除此之外,其事件序列完全相同。服务器端的检查仍然执行。尽管看起来似乎多余,但是却十分重要,因为:

某些验证控件可能不支持客户端脚本。有一个很好的例子:如果要同时使用 CustomValidator 和服务器验证函数,但是没有客户机验证函数。
安全性注意事项。某些人可以很容易得到一个包含脚本的页面,然后禁用或更改该页面。您不应利用脚本来阻止坏数据进入您的系统,而只应是为了用户得到更快的反馈。因此,如果要使用 CustomValidator,则不应提供没有相应服务器验证函数的客户机验证函数。
每个验证控件都可以确保将一个标准的客户端脚本块发送到页面中。实际上,这只是一小部分代码,其中包含对脚本库 WebUIValidation.js 中的代码的引用。这个脚本库文件包含客户端验证的所有逻辑,该文件需单独下载,并且可以存储在浏览器的缓存中。

关于脚本库

因为验证 Web 控件脚本在脚本库中,所以不必将所有客户端验证的代码直接发送到页面中,尽管表面上似乎是这样做的。主要的脚本文件引用类似如下所示:

<script language="javascript"      
src="/_aspx/1.0.9999/script/WebUIValidation.js"></script>

默认情况下,脚本文件将安装在 "_aspx" 目录中默认的根目录下,并使用相对于根的脚本 include 指令调用,该指令以正斜线开头。该引用表明每个单独的对象不必包含脚本库,同一台计算机上的所有页面可以引用同一个文件。您会注意到,该路径中还有一个公用的语言运行时版本号,以便不同的运行时版本可以在同一台计算机上运行。

如果查看一下您默认的虚拟根目录,您会找到该文件并查看其中的内容。这些文件的位置在 config.web 文件中指定。config.web 文件是一个用于大多数 ASP+ 设置的 xml(标准化越来越近了) 文件。以下是该文件中位置的定义:

    <webcontrols
        clientscriptslocation="/_aspx/{0}/script/"
    />        

鼓励您阅读该脚本,以便深入了解发生的事件。不过,建议您不要修改这些脚本,因为它们的功能与特定的运行时版本紧密相连。在运行时版本更新时,这些脚本可能也需要相应的更新,您将或者放弃更改,或者面临脚本不工作的问题。如果特定项目必须更改这些脚本,先备份这些脚本,然后将您的项目指向备份文件,方法是使用私有的 config.web 文件替代这些文件的位置。如果字符串中包含格式指令 "{0}",运行时版本号将替换该指令。最好将该位置更改为一个相对引用或绝对引用。

禁用客户端的验证

有时您可能不希望进行客户端验证。如果输入字段的数目很少,客户端验证可能用处不大。您毕竟每次都要有一个需要往返服务器一次的逻辑。您会发现客户机上动态出现的信息对您的布局会有负面影响。

要禁用客户端验证,应使用 Page 指令 "clienttarget=downlevel"。该指令类似以下 ASPX 文件的开头:

<%@ Page Language="c#" clienttarget=downlevel %>

该指令的默认值为 "auto",表示您只对 Microsoft Internet Explorer 4.0 或更高版本进行客户端验证。

注意:   不幸的是,在 Beta 1 中,该指令并非仅仅是禁用验证,同时还会使所有 Web 控件使用 HTML 3.2 标记来处理,这可能会产生意想不到的结果。最终版本提供了更好的方法来控制这个问题。

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

栏目导航

本类热门阅览

相关文章

PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:17,281.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号