<INPUT TYPE="SUBMIT" NAME="cmdRemove" VALUE=" "> Counter.Remove (" <SELECT NAME="lstRemove" SIZE="1"> <OPTION VALUE="wrox">Wrox Press</OPTION> <OPTION VALUE="stonebroom">Stonebroom</OPTION> <OPTION VALUE="xtras">Xtras</OPTION> <OPTION VALUE="compsrc">ComponentSource</OPTION> <OPTION VALUE="fourcds">Four CDs</OPTION> <OPTION VALUE="lunar">Lunar</OPTION> </SELECT> ")<P> … </FORM> 当载入页面时,通过检查Request.Form集合查看点击的按钮,如果找到了某个按钮,将运行代码的相应部分。在点击Remove按钮的情况下,相应的代码是: If Len(Request.Form("cmdRemove")) Then strCounterName = Request.Form("lstRemove") 'get the counter name objCounters.Remove strCounterName Response.Write "Removed counter '<B>" & strCounterName & "</B>'.<P>" End If 对于Set方法,情况类似,但不仅仅需要从文本框中读取新值,而且在调用Set方法之前,检查文本框中的值是否是有效值。 If Len(Request.Form("cmdSet")) Then strCounterName = Request.Form("lstSet") 'get the counter name strNewValue = Request.Form("txtSet") 'get the new value If IsNumeric(strNewValue) Then 'if it can be converted to a number intNewValue = CInt(strNewValue) '… then convert it objCounters.Set strCounterName, intNewValue Response.Write "Set counter '<B>" & strCounterName & _ "</B>' to <B>" & strNewValue & "</B>.<P>" Else Response.Write "<B>'" & strNewValue & "</B>' is not a valid number.<P>" End If End If 使用页面中的按钮调用Counters对象的方法时,重新载入时会在页面顶端看到一段信息和计数器中的新值,如图6-7所示:
图6-7 调用Counters对象的方法重新载入页面
6.2.5 Browser Capabilities组件 创建各种Web网页时面临的问题之一是,不仅仅使用ASP技术创建动态网页,而且能够使用HTML元素和其他客户端技术,像Java Applets、ActiveX控件以及最近出现的HTML元素。需要意识到的是,一些访问者若使用了恰好不支持它们的浏览器,那么对于精心编制的网页,访问者看到的可能是文本、图像的杂乱组合,甚至更糟糕的还有相应工作的脚本程序代码。 这里不讨论应当如何设计支持各种不同浏览器的网页(如果想了解这方面更多的内容,可以查阅Alex Homer编写的,Wrox出版的《Professional ASP Techniques for Webmasters》一书,书号是ISN 1-861001-79-7)。然而,确实要引用某个页面时,ASP和IIS提供铁Browser Capabilities服务器组件可以用来检测浏览器所支持的相关特征。 用户请求来自服务器的页面时,浏览器传送的HTTP报头包含了正在使用的浏览器的细节。在HTTP-speak(它被称为用户代理字符串)中,定义了浏览器的名称、版本、操作系统及其兼容性。Browser Capabilities组件在自己的配置文件中查找这个字符串,并采用许多与浏览器特征等同的特性。因此,在网页运行的任何时候,Browser Capabilities组件能够提供支持或不支持某个特性的细节。 在ASP 3.0版本中,Browser Capabilities组件增加了一个新特性。在ASP页面中包含METADATA指令,指示组件从浏览器中取出一个cookie,并把其包含的任意值添加到当前的组件实例中作为新属性。这提供了一种方法,从浏览器收集更多的用户特定的信息,而不仅仅是通常从browscap.ini文件中得到的浏览器指定的信息。了解了现有的浏览器检测特性如何工作后,再回头介绍新的METADATA技术。 1. browscap.ini文件 Browser Capabilities组件使用一个基于服务器的browscap.ini文本文件,该文本文件必须和browscap.dll组件文件处于同一目录中。browscap.ini文件包含大多数关于以前和当前浏览器的信息,并且当浏览器的用户代理字符串与文件中的指定字符串都不匹配时,将使用browscap.ini文件中的缺省部分。所以添加关于浏览器的新信息或者更新现有的信息,只需编辑browscap.ini文件。 首先看一下browscap.ini文件的格式,该文件中的所有条目都是可选的。担包括缺省部分是非常重要的。如果使用的浏览器与browscap.ini文件中的任何一个都不匹配,并且没有指定缺省浏览器设置,那么所有的特性将设置成“UNKNOWN”。 下面是browscap.ini文件的格式: ; we can add comments anywhere, divfaced by a semicolon like this
; entry for a specific browser [HTTPUserAgentHeader] parent = browserDefinition property1 = value1 property2 = value 2 …