2009-04-18 14 views

Odpowiedz

86

Oto 3 sposoby, aby zrobić to konkretnie z obiektem 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

Uwaga: zmieniono ToValueProvider() między frameworkiem 3.5 i 4.0 – Colin

+0

można utworzyć lub [Dodaj] (https://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection.add (v = vs.118) .aspx) wartości do 'formcollection' z modelu [properties] (http://stackoverflow.com/questions/737151/how-to-get-the-list-of-properties-of-a-class) w parze wartości klucza? – 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

Odnosi się to do Framework 3.5, gdzie ToValueProvider zwraca IDictionary. W Framework 4.0 ToValueProvider zwraca IValueProvider. – Colin

0

I w Vb.NET:

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

Otrzymuję "Wyrażenie jest typu" System.Web.Mvc.IValueProvider ", który nie jest typem kolekcji", gdy próbuję tego. Jeśli pominę "ToValueProvider", kompiluje się, ale otrzymuję "Określona obsada nie jest poprawna". – DrydenMaker

+0

@DrydenMaker - to dlatego, że używasz 4.0. Ta odpowiedź dotyczy 3.5 – Colin

1

Używam tego:

string keyname; 
string keyvalue; 

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

nadzieję, że ktoś pomoże.

1

w .NET Framework 4.0, kod do korzystania z ValueProvider jest:

 IValueProvider valueProvider = formValues.ToValueProvider(); 
     foreach (string key in formValues.Keys) 
     { 
      ValueProviderResult result = valueProvider.GetValue(key); 
      string value = result.AttemptedValue; 
     } 
Powiązane problemy