後臺如何通過Request取得多個含有相同name的控件的值

所有html控件的值都是可以在服務器端用後臺代碼的Request[name]來獲取其值的。但如果有多個相同nameHtml控件提交到後臺,怎麼分別取各個控件的值呢?而多數情況下這些控件的個數是不定的。

    例如在填寫簡歷表單中,工作經歷這項內容是可以讓用戶動態增加的,可能有的用戶有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,bbbccc。但是如果用戶在某個控件裏輸入的值就包含逗號本身,那就麻煩了。

    最好的解決方法就是用我以前沒有太注意過的方法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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章