2011-01-26 24 views

Trả lời

36

số

Thay vào đó, bạn có thể lặp qua tất cả các phím, và kiểm tra xem họ bắt đầu với checkbox.

Ví dụ:

foreach(string key in Request.Form) { 
    if (!key.StartsWith("checkbox")) continue; 
    ... 
} 

Các NameValueCollection enumerator lợi nhuận phím như dây đàn.

+0

Tại sao điều này lại được giảm giá? – SLaks

+0

Không phải bởi tôi ... điều này thật hoàn hảo! Cảm ơn! – MrM

+0

@user: Bạn được chào đón. Bạn nên chấp nhận câu trả lời này. – SLaks

4

Hoặc một cái gì đó như thế

var checkBoxes = Request.Form.Keys.Where(rs=>rs.StartsWith("dummy")); 
foreach(string key in checkBoxes){ 
// Your code 
} 
+2

Bạn cần một 'Cast () ' – SLaks

1

Bạn sẽ có thể làm điều này với LINQ (điều này nên làm việc, đã không kiểm tra): Tôi giả định cũng là ID của hộp kiểm là "hộp kiểm [ID]". BTW, ID trùng lặp trong các trường biểu mẫu là xấu xấu xấu.

var checkboxes = (from key in Request.Form.AllKeys where key = "checkbox" + UniqueIDNum) 
foreach(string key in checkboxes) 
{ 
    //do stuff 
} 
+0

Đó là không cần thiết chậm. 'AllKeys' sao chép một mảng. – SLaks

1
 [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Index(FormCollection fc) 
     { 
      string a = fc["hdn_1"].ToString(); // if you know for sure that it will have a value. 
      string lbl_1 = null; 

      foreach (var key in fc.AllKeys) 
      { 
       if (key.Contains("txt_1")) 
       { 
        lbl_1 = fc["txt_1"].ToString(); 
       } 
      } 
     } 

Hope this helps.

Các vấn đề liên quan