2009-04-18 20 views

Respuesta

86

Aquí hay 3 maneras de hacerlo específicamente con un objeto FormCollection.

public ActionResult SomeActionMethod(FormCollection formCollection) 
{ 
    foreach (var key in formCollection.AllKeys) 
    { 
    var value = formCollection[key]; 
    } 

    foreach (var key in formCollection.Keys) 
    { 
    var value = formCollection[key.ToString()]; 
    } 

    // Using the ValueProvider 
    var valueProvider = formCollection.ToValueProvider(); 
    foreach (var key in valueProvider.Keys) 
    { 
    var value = valueProvider[key]; 
    } 
} 
+0

Tenga en cuenta: ToValueProvider() cambió entre Framework 3.5 y 4.0 – Colin

+0

puedo crear o [Agregar] (https://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection.add (v = vs.118) .aspx) valores a 'formcollection' del modelo [properties] (http://stackoverflow.com/questions/737151/how-to-get-the-list-of-properties-of-a-class) en par de valor clave? – stom

4
foreach(var key in Request.Form.AllKeys) 
{ 
    var value = Request.Form[key]; 
} 
6
foreach(KeyValuePair<string, ValueProviderResult> kvp in form.ToValueProvider()) 
{ 
    string htmlControlName = kvp.Key; 
    string htmlControlValue = kvp.Value.AttemptedValue; 
} 
+2

Esto se aplica a Framework 3.5 donde ToValueProvider devuelve un IDictionary. En Framework 4.0 ToValueProvider devuelve un IValueProvider. – Colin

0

Y en VB.Net:

Dim fv As KeyValuePair(Of String, ValueProviderResult) 
For Each fv In formValues.ToValueProvider 
    Response.Write(fv.Key + ": " + fv.Value.AttemptedValue) 
Next 
+0

obtengo "La expresión es de tipo 'System.Web.Mvc.IValueProvider', que no es un tipo de colección" cuando intento esto. Si dejo fuera el "Proveedor de Valor", se compila, pero obtengo "El envío especificado no es válido". – DrydenMaker

+0

@DrydenMaker - eso es porque estás usando 4.0. Esta respuesta se aplica a 3.5 – Colin

1

Yo uso este:

string keyname; 
string keyvalue; 

for (int i = 0; i <= fc.Count - 1; i++) 
{ 
    keyname = fc.AllKeys[i]; 
    keyvalue = fc[i]; 
} 

espero que ayude a alguien.

1

En .NET Framework 4.0, el código para utilizar el ValueProvider es:

 IValueProvider valueProvider = formValues.ToValueProvider(); 
     foreach (string key in formValues.Keys) 
     { 
      ValueProviderResult result = valueProvider.GetValue(key); 
      string value = result.AttemptedValue; 
     } 
Cuestiones relacionadas