使用FormCollection获取和使用任何一个特定键的每个值

时间:2011-09-26 01:41:10

标签: c# asp.net-mvc asp.net-mvc-3

我在视图中有一堆列表框,每个列表框都有一个唯一的名称/ ID。提交时 action方法接收相应的数据,即key = listbox name和value(s)=该列表框的所有选定值。

如何获取任何一个键的所有值,并使用foreach语句等对每个值执行所需的操作?查看formcollection中的可用方法,他们得到(索引)而不是get(key)...

...谢谢

4 个答案:

答案 0 :(得分:12)

这应该也可以解决问题

public ActionResult YourAction(FormCollection oCollection)
      {

                    foreach (var key in oCollection.AllKeys)
                    {
                        //var value = oCollection[key];
                    }

                    return View();               
      }
    }   

  public ActionResult YourAction(FormCollection oCollection)
  {

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

                return View();               
  }

你不确定这个:

  public ActionResult YourAction(FormCollection oCollection)
  {
                foreach (KeyValuePair<int, String> item in oCollection)
                {
                    //item.key
                    //item.value
                }

                return View();               
  }

答案 1 :(得分:1)

好的,这可以完成工作。但希望有更有效的方法来做到这一点?

    [HttpPost]
    public ActionResult Edit(FormCollection form)
    {



        var count = form.Count;
        int i = 0;
        while(i <= count)
        {


            var ValueCollection = form.Get(i);
            var KeyName = form.GetKey(i);

            foreach(var value in ValueCollection)
            {

                //Your logic
            }



            i++;
        }




        return View();
    }

答案 2 :(得分:1)

可能你没有Get(key)方法,因为FormCollection实际上是一个派生自NameValueCollection的类,它具有接受name(或key)的indexer属性和接受name参数的Get方法。< / p>

答案 3 :(得分:0)

您可以获得类似于下面的键值对:

*func = 10;