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

本文关键字:任何一 获取 FormCollection 使用 | 更新日期: 2023-09-27 18:09:42

我在视图中有一堆列表框,每个列表框有一个唯一的名称/id。当提交操作方法接收相应的数据:key = listbox name and value(s) =该listbox的所有选定值。

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

谢谢…

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

这个应该也可以。

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();               
  }

好了,这就完成了任务。但希望有更有效的方法来做到这一点?

    [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();
    }

可能你是错误的,没有Get(键)方法,因为FormCollection实际上是一个类派生自NameValueCollection和它都有indexer属性接受名称(或键)和Get方法接受名称参数

您可以获得如下所示的键值对:

public ActionResult YourAction(FormCollection oCollection)
{
  var Item = new List<KeyValuePair<string, string>>();
  foreach (var key in oCollection.AllKeys)
   {
    Item.Add(new KeyValuePair<string, string>(key, oCollection[key]));
   }
return View();                 
}