views:

5434

answers:

4

How can I enumerate through all the key/values of a FormCollection (system.web.mvc) in ASP.NET MVC?

A: 
foreach(var key in Request.Form.AllKeys)
{
   var value = Request.Form[key];
}
James Avery
+24  A: 

Here are 3 ways to do it specifically with a FormCollection object.

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];
  }
}
Steve Willcock
+5  A: 
foreach(KeyValuePair<string, ValueProviderResult> kvp in form.ToValueProvider())
{
    string htmlControlName = kvp.Key;
    string htmlControlValue = kvp.Value.AttemptedValue;
}
A: 

And in VB.Net:

    Dim fv As KeyValuePair(Of String, ValueProviderResult)
    For Each fv In formValues.ToValueProvider
        Response.Write(fv.Key + ": " + fv.Value.AttemptedValue)
    Next
Dave
I get "Expression is of type 'System.Web.Mvc.IValueProvider', which is not a collection type" when I try this. If I leave out the "ToValueProvider" it compiles, but I get "Specified cast is not valid."
DrydenMaker