后台如何通过Request取得多个含有相同name的控件的值?
在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的控件的值?的更多相关文章
- 后台通过Request取得多个含有相同name的控件的值
string[] arrWeight = context.Request.Params.GetValues("Quantity");
- .NET后台如何获取前台HMTL控件的值
很多时候我们需要HTML控件,感觉比服务器控件更加简介,清爽,那么如何获取HMTL控件的值呢,请看下面例子: 前台页面代码: <input id="Text1" type=& ...
- 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。
客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值. 无论是什么的html控件,只要加上了runat="server" ...
- asp.net后台获取html控件的值
1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...
- 动态生成tr,并将其下控件的值拼接后传到后台并保存
有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...
- 前台改变asp button控件的值,后台取值没有改变的问题
前台: <asp:Button ID="btnEdit" Style="margin-left: 600px;" runat="server&q ...
- 在后台获取Textarea控件的值
使用Request.Form方法 1.在前台设置name 属性 <textarea name="Content">hdjfhjdfhdj</textarea> ...
- 后台获取html控件的值
string name = Request.Form["Name1"].ToString(); “xxx” 里的是name值 Request["xx"]取到相同 ...
- mui侧滑菜单"点击含有mui-action-menu类的控件"无法实现侧滑
.mui-action-menu 标题栏 菜单按钮 指定href="#id"显示与隐藏侧滑菜单 html: <div class="mui-off-canvas-w ...
随机推荐
- 【更新】用word文档来发布到csdn等博客上边免去一张张上传图片的烦恼
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- mysql 数据库查询
myspl 三部分 文件 服务 界面 查看数据库命令 show databases 创建数据库 create database 库名 删除数据库 drop database ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- C# 调取摄像头 +拍照
1.添加引用 using System.Windows.Media.Imaging; using AForge; using AForge.Controls; using AForge.Video; ...
- php获取数组的键值
<?php header ( "Content-type: text/html; charset=utf-8" ); $info[; $info[; $info[; $inf ...
- C++构造和析构的顺序
C++构造函数和析构函数的顺序 #include <iostream> using namespace std; class CA {public: CA() { cout << ...
- 算法 UVA 11729
例2:假设当前小光有n个部下,每个部下需要完成一项任务.第i个部下需要小光花Bi分钟交代任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务.小光需要选择交代任务的顺序,使得所有任务尽早执行完毕 ...
- day04.2-迭代器
1. 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退). 2. 可迭代对象:实现了迭代器 ...
- 29.Combination Sum(和为sum的组合)
Level: Medium 题目描述: Given a set of candidate numbers (candidates) (without duplicates) and a targe ...
- [Objective-C语言教程]变量(6)
变量是程序可以操作的存储区域的名称. Objective-C中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在内存中的值的范围; 以及可以应用于变量的操作集. 变量的名称可以由字 ...