2011-01-26 68 views
8

Tengo algunas casillas de verificación con una identificación única. ¿es posible encontrar todas las casillas de verificación + uniquenum en una colección de formularios?¿Puedo recorrer un Collection.Request.Form?

algo así como -

foreach (var item in Collection.Request.Form["checkbox" + with UniqueIDNum]) 
{ 
    //code 
} 

Respuesta

36

su lugar, se puede recorrer todos los botones, y comprobar si empiezan con checkbox.

Por ejemplo:

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

Los NameValueCollection enumerator devuelve claves como cadenas.

+0

¿Por qué ha bajado este valor? – SLaks

+0

No por mí ... ¡esto fue perfecto! ¡Gracias! – MrM

+0

@user: De nada. Deberías aceptar esta respuesta. – SLaks

4

O algo por el estilo

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

Necesita un 'Cast ()' – SLaks

1

Usted debe ser capaz de hacer esto con LINQ (esto debería funcionar, no se han probado): Asumo también que la identificación de las casillas de verificación es casilla de verificación " [CARNÉ DE IDENTIDAD]". Por cierto, las identificaciones duplicadas en los campos de formulario son malas y malas.

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

Eso es innecesariamente lento. 'AllKeys' copia una matriz. – 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(); 
       } 
      } 
     } 

Espero que esto ayude.

Cuestiones relacionadas