后台如何通过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。
轉載于:https://www.cnblogs.com/BrokenIce/p/5663896.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的后台如何通过Request取得多个含有相同name的控件的值?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【网络流24题】星际转移问题(最大流)
- 下一篇: 多表连接时USING和ON的区别,USI