2009-07-02 10 views
1

ASP.NET 2.0ページのフォームポストで、チェックされたhtmlチェックボックスの値(Request.Form ["mylist"] return Value1、Value2、Value3 ....)の長い文字列を受け取りました。チェックボックス配列のループをC#

ここではループしたいだけですが、この配列の配列をループするのがベストプラクティスであるかどうかはわかりません。私はこのような何かをしようとしています:

foreach (string Item in Request.Form["mylist"]){ 
    Response.Write(Request.Form["mylist"][Item] + "<hr>"); 
} 

しかし、それは動作しません。

答えて

6

コンマ区切り文字列を分割する必要があります。試してみてください。

string myList = Request.Form["myList"]; 
if(string.isNullOrEmpty(myList)) 
{ 
    Response.Write("Nothing selected."); 
    return; 
} 
foreach (string Item in myList.split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries)) 
{ 
    Response.Write(item + "<hr>"); 
} 
0

コンマで値を分割しないようにするには、[値を分割]を使用しないことをお勧めします。

string myList = Request.Form.GetValues("myList"); 
foreach (var Item in myList) 
{ 
    Response.Write(item + "<hr>"); 
} 
0

重要かつ正確なポイントを持っているドルチェビタの答えを、完了し、デバッグするには...

次の例のHTML

<p>Select numbers for a sum:</p> 
<input type="checkbox" id="c1" name="myList" value="1"/><label for="c1">1</label> 
<input type="checkbox" id="c2" name="myList" value="2"/><label for="c2">2</label> 
<input type="checkbox" id="c3" name="myList" value="3"/><label for="c3">3</label> 

を考えると、あなたが

var sum = 0; 
var selectedNumbers = Request.Form.GetValues("myList"); 

if (selectedNumbers != null) 
{ 
    foreach (var selectedNumber in selectedNumbers) 
    { 
     // my example uses integers 
     var number = int.Parse(selectedNumber); 
     sum += number; 
    } 
} 

Response.Write("<p>Sum: " + sum + "</p>"); 
で選択されたチェックボックスを読み取ることができます