在Asp.net开发中,所有html控件的值都是可以在服务器端用后台代码的Request[name]来获取其值的。但如果有多个相同name的Html控件提交到后台,怎么分别取各个控件的值呢?而多数情况下这些控件的个数是不定的。

例如在填写简历表单中,“工作经历”这项内容是可以让用户动态增加的,可能有的用户有3条工作经历,有的用户有5条工作经历。当然,我们讨论这个问题的前提是由用户动态增加后一起提交到服务器,而不是采用增加一条提交一条的方式。例如:

当用户点“添加”时就通过Javascript动态生成元素插入到document里,而这些添加的元素都保持name统一。我们可以把问题简化一下,例如以下代码submit到服务器后在后台如何获取name为“txt”的textbox的数量以及如何获取各自的值:

<input type=”text” name=”txt” >
         <input type=”text” name=”txt” >
         <input type=”text” name=”txt” >
           ……

一开始想到的是用Request[“txt”]、Request.Form[“txt”]以及Request.Params[“txt”],这些都将返回所有name为“txt”的元素的值,并用逗号分隔,例如返回 “aaa,bbb,ccc” ,这表示这三个textbox的值分别是aaa,bbb和ccc。但是如果用户在某个控件里输入的值就包含逗号本身,那就麻烦了。

最好的解决方法就是用我以前没有太注意过的方法Request.Params.GetValues( string name)。它返回的是一个数组,所以就不用担心逗号的问题了。例如这个例子中就可以用这个方法:

string[] txtArr = Request.Params.GetValues("txt");

这下就可以通过txtArr.length来获知有多少个name为“txt”的控件了,并能很方便的遍历各个控件的值。

http://www.cnblogs.com/qguohog/archive/2009/10/29/1592450.html

Request 分别获取具有相同 name 属性表单元素值

 
<form method="post" action="">
<input name="txtName" id="txtFirstName" type="text" />
<input name="txtName" id="txtMiddleName" type="text" />
<input name="txtName" id="txtLastName" type="text" />
</form>

服务器端读取的常规做法是:

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

得到的将是一串以逗号分割的字符串,当然你可以手动分割:
string[] nameParts = name.Split(’,’);
但是当每个 input 输入可能包含逗号的时候,通过逗号分割就会是错的。
如何解决?
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。

后台如何通过Request取得多个含有相同name的控件的值?的更多相关文章

  1. 后台通过Request取得多个含有相同name的控件的值

    string[] arrWeight = context.Request.Params.GetValues("Quantity");

  2. .NET后台如何获取前台HMTL控件的值

    很多时候我们需要HTML控件,感觉比服务器控件更加简介,清爽,那么如何获取HMTL控件的值呢,请看下面例子: 前台页面代码: <input id="Text1" type=& ...

  3. 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。

    客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值.     无论是什么的html控件,只要加上了runat="server" ...

  4. asp.net后台获取html控件的值

    1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...

  5. 动态生成tr,并将其下控件的值拼接后传到后台并保存

    有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...

  6. 前台改变asp button控件的值,后台取值没有改变的问题

    前台: <asp:Button ID="btnEdit" Style="margin-left: 600px;" runat="server&q ...

  7. 在后台获取Textarea控件的值

    使用Request.Form方法 1.在前台设置name 属性 <textarea name="Content">hdjfhjdfhdj</textarea> ...

  8. 后台获取html控件的值

    string name = Request.Form["Name1"].ToString(); “xxx” 里的是name值 Request["xx"]取到相同 ...

  9. mui侧滑菜单"点击含有mui-action-menu类的控件"无法实现侧滑

    .mui-action-menu 标题栏 菜单按钮 指定href="#id"显示与隐藏侧滑菜单 html: <div class="mui-off-canvas-w ...

随机推荐

  1. 【Linux】Vim编辑器

    本文基于Debian 1.vim使用简介 1.1vim安装 使用apt安装vim即可: sudo apt-get install vim 1.2 vim编辑器的模式 vim编辑器分为命令模式和编辑模式 ...

  2. numpy数组与python的list互转,然后用json写入文件与c交互

    1.对于numpy的tofile方法,一个一维数组可以直接写成二进制形式,用c语言或者numpy.fromfile()可以读出来内容.而如果数组超过一维,tofile并不区分,也就是arr1=[1,2 ...

  3. HTTP 常见异常状态及Delphi IDHTTP 控件处理方式

    以下部分为网上查找,部分为工作中整理 200:请求成功 202:请求被接受,但处理尚未完成 302:请求到的资源在一个不同的URL处临时保存     处理方式:重定向到临时的URL(IDHTTP处理方 ...

  4. [LeetCode 题解]: Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. 题解: 寻找一组字符串的最 ...

  5. WordCloud 简介

    WordCloud 简介 GitHub GitHub:https://github.com/amueller/word_cloud example:https://github.com/amuelle ...

  6. BZOJ1901 Dynamic Rankings|带修主席树

    题目链接:戳我 其实我并不会做,于是看了题解 我们都知道主席树是利用前缀和记录历史版本来搞区间K大的一种数据结构.不过一般的主席树只能搞定静态区间第K大.如果带修怎么办呢? 想一下...单点修改+区间 ...

  7. fhq treap——简单又好写的数据结构

    今天上午学了一下fhq treap感觉真的很好用啊qwq 变量名解释: \(size[i]\)表示以该节点为根的子树大小 \(fix[i]\)表示随机权值 \(val[i]\)表示该节点的值 \(ch ...

  8. nowcoder(牛客网)普及组模拟赛第一场 解题报告

    蒟蒻我可能考了一场假试 T1 绩点 这题没什么好说的,应该是只要会语言的就会做. T2 巨大的棋盘 一个模拟题吧qwq,但是要注意取模的时候先加上n或者m再取模,要不然会错的. #include< ...

  9. linux命令之系统管理命令(上)

    1.lsof:查看进程打开的文件 该命令可以列举系统中已经被打开的文件,可以根据文件找到对应的进程信息,同时也可以根据进程信息找到进程打开的文件. 参数 说明 -c 进程名 显示指定的进程名打开的文件 ...

  10. kali linux之应用层Dos

    应用层服务漏洞: 服务代码存在漏洞,遇异常提交数据时程序崩溃 应用处理大量并发请求能力有限,被拒绝的是应用或OS 缓冲区溢出漏洞: 向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存 影响:远 ...