1. 程式人生 > >後臺如何通過Request取得多個含有相同name的控制元件的值?

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

在Asp.net開發中,所有html控制元件的值都是可以在伺服器端用後臺程式碼的Request[name]來獲取其值的。但如果有多個相同name的Html控制元件提交到後臺,怎麼分別取各個控制元件的值呢?而多數情況下這些控制元件的個數是不定的。

    例如在填寫簡歷表單中,“工作經歷”這項內容是可以讓使用者動態增加的,可能有的使用者有3條工作經歷,有的使用者有5條工作經歷。當然,我們討論這個問題的前提是由使用者動態增加後一起提交到伺服器,而不是採用增加一條提交一條的方式。例如:

image

      當用戶點“新增”時就通過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