深入讲解 ASP+ 验证(三)

2016-01-29 13:59 3 1 收藏

深入讲解 ASP+ 验证(三),深入讲解 ASP+ 验证(三)

【 tulaoshi.com - ASP.NET 】

客户端的验证

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

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

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

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

关于脚本库

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

<script language="javascript"
src="http://img.jcwcn.com/attachment/portal"</script

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

<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 标记来处理,这可能会产生意想不到的结果。最终版本提供了更好的方法来控制这个问题。

客户端事件序列

该序列是在运行包含客户端验证的页面时发生的事件序列:

在页面载入浏览器时,需要对每个验证控件进行一些初始化。这些控件作为 <span 标记发送,其 HTML 特性与服务器上的特性最接近。最重要的是,此时会将验证器引用的所有输入元素“挂接”。被引用的输入元素将修改其客户端事件,以便在每次输入更改时调用验证例程。
脚本库中的代码将在用户使用 tab 键在各字段之间切换时执行。某个独立的字段更改时,将重新评估验证条件,根据需要使验证器可见或不可见。
当用户尝试提交表单时,将重新评估所有验证器。如果这些验证器全部有效,表单将提交给服务器。如果存在一处或多处错误,则会出现下述情况:
提交被取消。表单并不提交给服务器。
所有无效的验证器均可见。
如果某个验证摘要包含 ShowSummary=true,则将收集来自验证控件的所有错误,并使用这些错误更新其内容。
如果某个验证摘要包含 ShowMessageBox=true,则将收集错误,并在客户机的信息框中显示这些错误。
因为在每次输入更改时或提交时会执行客户端验证控件,所以在客户机上通常会评估

来源:http://www.tulaoshi.com/n/20160129/1492192.html

延伸阅读
标签: ASP
  这一章介绍关于Asp+的服务器端的控件 除了使用<%%号以外,asp+ 的程序开发者目前可以使用新的标签来生成动态的页面了,新的服务器控可以在asp+ 文件中利用一个 特殊的tag runat=server来声明 下面的例子中用到了以下几个服务器控件<form runat=server, <asp:textbox runat=server, <asp:dropdownlist runat=server, and <...
标签: ASP
       作者:飞鸟   ---------------------------------------------------------------------------------------      html1.htm   ---------------------------------------------------------------------   <html>   <head>  ...
标签: ASP
  二、ASP + Web Forms     ASP + Web Forms ,一个微软的新名词,照它自己的话说,ASP + Web Forms页面框架是一个可升级的NGWS runtime编程模型,可以在服务器上动态产生网页。不太好懂是吗,其实说白了,和HTML的表单一样,但它可以在服务器端动态改变,而不象静态HTML表单那样一旦生成就无法改变,当然,用DHTML...
标签: ASP
  Before embarking on the inevitable—and not painless—migration to ASP+, it's best to know what compatibility issues you'll have to deal with by Chris Kinsman   Microsoft is set to release an exciting upgrade to ASP later in 2000. This is a major upgrade unlike the minor changes from ASP 2.0 t...
最初的考虑(一) 作 者 : 雨晨 它包括运行平台的配置,pagelet的建立,新的ADO+的使用,如何使用新的DataSet进行数据访问,HTML表格到DataList的转变,以及其他多种新的服务器端控件的使用技巧……还等什么?现在就来感受一下ASP+的全新魅力吧!) 自从微软在2000年7月的专业开发人员会议上宣布了ASP+以来, 一个相同的问题一直...

经验教程

448

收藏

48

精华推荐

ASP+全新接触

ASP+全新接触

宁宁可爱多1

ASP+上载例子

ASP+上载例子

杨不悔521

ASP+ 与 Java

ASP+ 与 Java

微弱思慕痒

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部