ASP的Form表单和QueryString集合使用详解(一)

当用户填写页面<FORM>内容时所提供的全部值,或在浏览器地址栏输入在URL后的值,通过Form表单和QueryString集合为ASP脚本所用。这是在ASP代码中访问值的一种简单方法。

  1、 访问ASP集合的一般技术

  大多数ASP集合与在VB中见到的普通集合相差不多。实际上,它们是值的数组,但能通过使用一个文本字符串键(对大小不敏感)以及一个整型索引进行访问。因此,假如客户端Web页面包含的<FORM>如下:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
FirstName:<INPUT TYPE=”TEXT” NAME=”FirstName”>
LastName:<INPUT TYPE=”TEXT” NAME=”LastName”>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

  可通过访问ASP的Form集合来访问其控件内的值:

strFirstName = Request.Form(“FirstName”)
strLastName = Request.Form(“LastName”)

  也可使用窗体中控件的整型索引,索引的范围从在HTML中第一个定义的控件开始,然后根据定义的顺序排序:

strFirstName = Request.Form(1)
strLastName = Request.Form(2)

  然而,后面的这种以整型为索引的技术不推荐使用,因为一旦有HTML中的控件发生了变化,或者插入一个新的控件,则ASP代码将得到错误的值。进一步而言,对于阅读代码的人来讲,极容易混淆。

  1) 访问集合的全部值

  可以通过引用集合把整个Form上的一系列值变成单个的字符变量,且不用提供键或索引。

StrAllFormContent = Request.Form

  假如文本框包含值Priscilla和Descartes,则Request.Form语句将返回下列字符:

FirstName=Priscilla&LastName=Descartes

  注意,提供的值是以名称/值对的形式出现的(即控件名称=控件值),并且每一对名称/值相互之间是用符号“&”相分隔的。假如打算把窗体中的内容传递单独的,希望得到值的标准格式的可执行应用程序或DLL,这个技术是很有用的。然而,一般说来,都是通过以窗体中控件的名称为文本键来访问集合中的内容。

  2) 遍历一个ASP集合

  有两种方式遍历一个ASP集合中的所有成员,方式与普通VB集合的基本相同。每个集合提供一个Count属性,返回的是集合中条目数量。可通过使用一个整型索引使用Count属性来遍历。

For intLoop=1 To Request.Form.Count
Response.Write Request.Form(intLoop) & “<BR>”
Next

  假如先前的窗体包含Priscilla和Descartes值的两个文本框,将得到如下结果:

Priscilla
Descartes

  然而,更好的方法是使用For Each...Next结构。

For Each objItem In Request.Form
Response.Write objItem & “=” & Request.Form(objItem) & “<BR>”
Next

  这带来的好处是既可以访问控件的名称又可访问其值。上述代码将得到如下结果:

FirstName = Priscilla
LastName = Descartes

  注意,一些浏览器返回到ASP的<FORM>值可能与页面上显示的顺序不尽相同。
3) 集合成员的多值性

   在某些情况下,ASP集合中的各个成员可能不止一个值,这种情况发生在HTML定义中有几个控件有相同Name属性时。例如:

<FORM ACTION=”Show_request.asp” METHOD=”POST”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”TEXT” NAME=”OtherHobby”>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

  在Form集合中,将为“OtherHobby”创建一个条目。然而,它将包括从三个文本框中得到的值。假如在提交时,用户留下了一个或多个为空,则返回的值为空字符串。假如用户在第一和第三个文本框分别输入Gardening和Mountaineering,第二个文本框为空,在我们的ASP代码中访问Request.Form(“OtherHobby”),将返回字符串:

Gardening, ,Mountaineering

  为了能够在这种情况下,访问单个值,可以用复杂一些的代码:

For Each objItem In Request.Form If Request.Form(objItem).Count >1 Then ‘More than one value in this item Response.Write objItem & “:<BR>”  For intLoop = 1 To Request.Form(objItem).Count   Response.Write “Subkey” & intLoop & “value = “& Request.Form(objItem) (intLoop) & “<BR>”  Next Else  Response.Write objItem & “ = ” & Request.Form(objItem) & “<BR>” End IfNext

  对于前面的包含三个OtherHobby控件的窗体实例,这将返回:

OtherHobby:
Subkey 1 value = Gardening
Subkey 2 value =
Subkey 3 value = Mountaineering

  然而,由于很少给多个文本框相同的名字,因此这种技术很少用到。

  a) HTML中的单选或选页按钮控件

  在HTML中,需要给几个控件相同的Name属性的情况是单选(或选项)按钮,例如:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I live in:
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”AM”>America<BR>
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”EU”>Europe<BR>
<INPUT TYPE=”RADIO” NAME=”Country” VALUE=”AS”>Asia<BR>
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

  因为用户只能选择多项中的一个(这就是给它们相同的名字的原因),将仅得到一个返回值,浏览器只能发送所选择控件的值。因此,假如这个窗体的用户已经选择了“Europez”,将得到这个条目,通过遍历Form集得到其值:

Country = EU

  由于为每个控件提供了不同的VALUE属性,反映了每个条目所对应的国家或地区的名称。假如省略了VALUE属性,浏览器将返回的值为“on”,因此将得到:

Country = on

  这是不经常用到的,因此一般对使用相同名称的单选控件使用VALUE属性。

b) HTML复选框控件

  当一个窗体中HTML源码包含一个复选框控件时,一般都给定唯一的名称,例如:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I enjoy:
<INPUT TYPE=”CHECKBOX” NAME=”Reading” CHECKED> Reading
<INPUT TYPE=”CHECKBOX” NAME=”Eating”> Eating
<INPUT TYPE=”CHECKBOX” NAME=”Sleeping”> Sleeping
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

在这种情况下,提交窗体时,假如仅是第一和第三个复选框被选中(加标记),遍历Form集合时,会得到下列值:

Reading = on
Sleeping = on

然而,假如为每个复选框提供一个值,把这个值发往服务器代替字符串“on”。例如窗体如下:

<FORM ACTION=”show_request.asp” METHOD=”POST”>
I enjoy:
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby025” NAME=”Hobby” CHECKED>_
Swimming
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby003” NAME=”Hobby” CHECKED>_
Reading
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby068” NAME=”Hobby”>Eating
<INPUT TYPE=”CHECKBOX” VALUE=”Hobby010” NAME=”Hobby”>Sleeping
<INPUT TYPE=”SUBMIT” VALUE=”Send”>
</FORM>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索form
, 控件
, input
, request
, type
, 集合 action
, 一个
, input输入框控件
, request.form
, request.form值
, name相同
, Value不相同
, 遍历Form
input控件
form表单提交list集合、form表单详解、form表单提交集合、ajax提交form表单详解、form表单提交详解,以便于您获取更多的相关知识。

时间: 2025-01-30 16:59:03

ASP的Form表单和QueryString集合使用详解(一)的相关文章

ASP的Form表单和QueryString集合使用详解(二)

如果除第三个复选框外,全部提交,在Request.Form集合会产生下列结果: Hobby = Hobby025, Hobby003, Hobby010 假如编写更复杂一些集合遍历代码,如先前所述(单独显示每个子键),就得到这样结果: Hobby:Subkey 1 value = Hobby025Subkey 2 value = Hobby003Subkey 3 value = Hobby010 需要注意的是两种情况,没有选中的控件根本不返回任何值.在第一种情况的结果里,没有欺骗性的逗号,第二种

表单验证正则表达式实例代码详解_javascript技巧

表单验证正则表达式具体内容如下所示: 首先给大家解释一些符号相关的意义      1.  /^$/ 这个是个通用的格式.          ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置      2. 里面输入需要实现的功能.         * 匹配前面的子表达式零次或多次:        + 匹配前面的子表达式一次或多次:        ?匹配前面的子表达式零次或一次:        \d  匹配一个数字字符,等价于[0-9] 下面通过一段代码给大家分析表单验证正则表达式,具体代

jQuery表单美化插件jqTransform使用详解_jquery

jQuery Form表单美化插件jqTransform,非常实用的jQuery插件,自动把你整个Form表单进行美化处理,包括SELECT下拉框.文本框.单选.复选框.按钮等,当然不支持input file文件选择框,这个可以参照我们之前的input file选择框美化教程进行改造,在浏览器兼容方面,兼容 ie 6+, safari 2+, firefox 2+,插件还是很不错的,使用起来也很简单,推荐学习和使用. 使用方法: 1.加载jQuery和插件 <script type="te

jquery表单插件Autotab使用方法详解_jquery

Autotab也是一款功能专一的表单插件,它提供了自动跳格的功能,当用户输入的字符数一旦超过已定义的最大长度,则会根据事先设置的目标自动跳转到相应元素上,省却了 用户按[Tab]键的麻烦.最典型的应用就是输入IP地址.软件激活码等地方了,我们做的web项目中也有很多地方可以用到这插件,对于提高用户体验还是很有帮助的. 使用时需要引入jquery.autotab.js,下载地址:点击进入下载页面 <html> <head> <title> New Document <

如何避免表单的重复提交原理详解

这个技巧的主要原理是不允许用户回退后再次提交,也就是说回退后修改再提交也是不允许的,而且也不能避免Ctrl-C/Ctrl-V的灌水办法.究竟有没有用,还是看各位站长的喜好了 你是否遇到过"重复提交"的问题?要解决这个问题其实并不难.这里有一个简单的方法避免同一表单的重复提交. 首先,我们可以定义一个session变量用来保存一个表单的提交序列号.这里我定义为"$userLastAction".然后在表单里加入一个hidden变量,把值设为$userLastActio

ASP.NET中实现把form表单元素转为实体对象或集合

这篇文章主要介绍了ASP.NET中实现把form表单元素转为实体对象或集合,本文又是一个对重复数据处理的一个封装,非常实用的开发技巧,需要的朋友可以参考下     简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单:   代码如下: <input name='id' value='1' > <input name='sex' value='男' >   后台:

ASP.NET中实现把form表单元素转为实体对象或集合_实用技巧

简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单: 复制代码 代码如下: <input name='id'  value='1' > <input name='sex'  value='男' > 后台: 复制代码 代码如下: //以前写法             DLC_category d = new DLC_category();            

ASP.NET 安全认证(一):如何运用 Form 表单认证

asp.net|安全 代码写 N 久了,总想写得别的.这不,上头说在整合两个项目,做成单一登录(Single Sign On),也有人称之为"单点登录".查阅相关文档后,终于实现了,现在把它拿出来与大家一起分享.或许大家会问:"这与标题不符呀?"别急,在下笔之前,我脑子里想到了我刚使用 Form 认证时遇到的一些问题,以及使用过程用到的一些技巧(实乃投机取巧是也 ^_^ ).偶打初中那时,语文水平就不怎么滴,考试常常作文写不出来,所以写作水平有限,还请大家海量.对了

asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.aspx的Send提交按钮时,这个时候会action到Default2.aspx页面,在这个时候就报错了,报的错误是:Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, e