Asp.net mvc 如何在ASP.NET MVC中枚举formcollection?

Asp.net mvc 如何在ASP.NET MVC中枚举formcollection?,asp.net-mvc,enumerator,Asp.net Mvc,Enumerator,如何枚举的所有键/值 在?中的FormCollection(system.web.mvc)这里有3种方法专门用于FormCollection对象 public ActionResult SomeActionMethod(FormCollection formCollection) { foreach (var key in formCollection.AllKeys) { var value = formCollection[key]; } foreach (var

如何枚举的所有键/值
在?

中的FormCollection(system.web.mvc)这里有3种方法专门用于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];
  }
}
foreach(形式为.ToValueProvider()的KeyValuePair kvp)
{
字符串htmlControlName=kvp.Key;
字符串htmlControlValue=kvp.Value.AttemptedValue;
}
和在VB.Net中:

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

string keyname;
string keyvalue;

for (int i = 0; i <= fc.Count - 1; i++)
{
    keyname = fc.AllKeys[i];
    keyvalue = fc[i];
}
字符串键名;
字符串键值;

对于.NET Framework 4.0中的(int i=0;i),使用ValueProvider的代码为:

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

当我尝试此操作时,我得到“表达式的类型为'System.Web.Mvc.IValueProvider',这不是集合类型”。如果我省略了它编译的“ToValueProvider”,但我得到“指定的强制转换无效”@DrydenMaker-这是因为您使用的是4.0。这个答案适用于3.5。进一步,我们如何找到该项是从文本框、隐藏字段还是组合框等返回的?这适用于框架3.5,其中ToValueProvider返回IDictionary。在框架4.0中,ToValueProvider返回IValueProvider。请注意:ToValueProvider()在框架3.5和4.0之间进行了更改,是否可以在键值对中从模型创建或将值转换为
formcollection
string keyname;
string keyvalue;

for (int i = 0; i <= fc.Count - 1; i++)
{
    keyname = fc.AllKeys[i];
    keyvalue = fc[i];
}
        IValueProvider valueProvider = formValues.ToValueProvider();
        foreach (string key in formValues.Keys)
        {
            ValueProviderResult result = valueProvider.GetValue(key);
            string value = result.AttemptedValue;
        }