html 中是允许多个具有相同name属性的元素的,例如

<div>
<input name="txtName" id="txtFirstName" type="text" />
<input name="txtName" id="txtMiddleName" type="text" />
<input name="txtName" id="txtLastName" type="text" />
</div>
服务器端读取的常规做法是:

string name = Request.Params["txtName"];

得到的将是一串以逗号分割的字符串,当然你可以手动分割:
string[] nameParts = name.Split(',');
但是当每个 input 输入可能包含逗号的时候,通过逗号分割就会是错的。
如何解决?
在 Classic ASP 通过 Request 可以这样分别获取

<%
firstName = Request.Form("txtName")(1)
middleName = Request.Form("txtName")(2)
lastName = Request.Form("txtName")(3)
%>
在 ASP.NET HttpRequest 同样支持 Classic ASP Request 的用法,

string[] nameParts = Request.Params.GetValues("txtName");
string firstName = nameParts[0];
string middleName = nameParts[1];
string lastName = nameParts[2];
以上用法对于 GET/POST 方式提交都是适用的。


得注意的是,用来存储 QueryString/Form/ServerVariables 的对象是
System.Collections.Specialized.NameValueCollection, 这是 Key/Value
型对象,它的特殊性在于,一个Key下可存储多个 Value。

越来越怀念 Classic ASP,ASP+ 将简单的HTTP裹得太严实,很多简单实用的用法逐渐被遗忘,漫天飞的 runat="server" 让诸多原始但精巧的 form 处理方式没有被传承下来....
顺便题下,虽然很少使用ASP.NET AJAX,特别是ControlToolkit包,当然也是由于参与UI需求的AJAX开发较少,但是对ControlToolkit的性能,特别是响应效率一直抱怀疑态度....

Request 分别获取具有相同 name 属性表单元素值的更多相关文章

  1. Request获取具有相同 name 属性表单元素值

    html代码如: <input name="txtName" id="txtFirstName" type="text" /> ...

  2. jQuery name属性与checked属性结合获取表单元素值

    var paytype = $("input[name='paytype']:checked").val(); alert(paytype); input元素下名称为paytype ...

  3. 基于JQuery实现表单元素值的回写

    form.jsp: <%@ page language="java" import="java.util.*" pageEncoding="GB ...

  4. antd 父组件获取子组件中form表单的值

    还是拿代码来讲吧,详情见注释 子组件 import React, { Component } from 'react'; import { Form, Input } from 'antd'; con ...

  5. 获取form表单元素值的4种方式

    <html><head><title></title><script type="text/javascript"> f ...

  6. jQuery 获取、设置表单元素的值

    获取表单元素值: 文本框,文本区域: $("#txt").attr("value"): 多选框 checkbox:$("#checkbox_id&qu ...

  7. HTML5 学习总结(二)——HTML5新增属性与表单元素

    一.HTML5新增属性 1.1.contextmenu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> & ...

  8. HTML5 学习笔记(二)——HTML5新增属性与表单元素

    目录 一.HTML5新增属性 1.1.contextmenu 1.2.contentEditable 1.3.hidden 1.4.draggable 1.5.data-* 1.6.placehold ...

  9. HTML5学习总结——HTML5新增属性与表单元素

    一HTML5新增属性 1.1contcxtmcnu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> < ...

随机推荐

  1. Domj4读取xml文件

    节点: Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点 标签: Element Document.getRootElement(); //获取xm ...

  2. VHDL学习之TEXTIO在仿真中的应用

    TEXTIO 在VHDL 仿真与磁盘文件之间架起了桥梁,使用文本文件扩展VHDL 的仿真功能.本文介绍TEXTIO 程序包,以一个加法器实例说明TEXTIO 的使用方法,最后使用ModelSim 对设 ...

  3. synaptics驱动,插入USB鼠标禁用触控板注册表

    Title:synaptics驱动,插入USB鼠标禁用触控板注册表 --2010-11-01 22:21 记得以前用过一个synaptics的驱动,自带有插入USB鼠标禁用触控板的选项的,有些没有自带 ...

  4. Altium Designer 6 快速进行差分对走线

    1: 在原理图中让一对网络前缀相同,后缀分别为_N 和_P,并且加上差分队对指示.在原理图中,让一对网络名称的前缀名相同,后缀分别为_N 和_P,左键点击Place DirectivesDiffere ...

  5. 不建议用wxWidgets,底层有过多的bug

    不建议用wxWidgets, 搞了wxWidgets 3年,不是所说的那么容易跨平台,很多bug,不稳定, 莫名其妙的崩溃找源代码修改编译真是费时费力. 开发速度真没有使用本地sdk开发高, 很难定制 ...

  6. rsyslog 一重启就会开始同步之前所有通配的日志文件

    <pre name="code" class="html">[root@dr-mysql01 zjzc_log]# grep '24/Sep/201 ...

  7. 两表关联更新,用于update 回滚

    create table test1 as select * from dba_objects; create table test2 as select * from dba_objects; cr ...

  8. Linux系统编程(32)—— socket编程之TCP服务器与客户端

    TCP协议的客户端/服务器程序的一般流程 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后, ...

  9. 2015第27周三Java内存模型

    自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果不使用或者不常常回顾,那么还不是自己的知识. 要认识java线程安全,必须了解两个主要的点:java的内存模型,java的 ...

  10. 转载:SQL Server高效 -- 设计(ITPUT 讨论汇总

    http://blog.csdn.net/zjcxc/article/details/8979756 认为在设计SQL Server对象时,主要会考虑哪些因素来避免出现性能问题? 讨论汇总——总体设计 ...