【问题标题】:checkbox array loop in c#C#中的复选框数组循环
【发布时间】:2009-07-02 14:37:45
【问题描述】:
我在 ASP.NET 2.0 页面的表单帖子中收到一长串选中的 html 复选框值(Request.Form["mylist"] return Value1,Value2,Value3....)。
现在我只想循环这些,但我不知道循环这个字符串数组的最佳做法是什么。我正在尝试做这样的事情:
foreach (string Item in Request.Form["mylist"]){
Response.Write(Request.Form["mylist"][Item] + "<hr>");
}
但它不起作用。
【问题讨论】:
标签:
c#
asp.net
checkbox
foreach
【解决方案1】:
您必须拆分逗号分隔的字符串。试试
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>");
}
【解决方案2】:
我建议不要在表单值中使用拆分,以防止用逗号拆分值。
string myList = Request.Form.GetValues("myList");
foreach (var Item in myList)
{
Response.Write(item + "<hr>");
}
【解决方案3】:
为了完成和调试DolceVita的回答,有一个重要且正确的点...
给定以下 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>");