2011-09-26 4 views
3

각 목록 상자에는 고유 한 이름/ID가있는 뷰에 목록 상자가 있습니다. 을 제출하면 조치 메소드는 키 = 목록 상자 이름 및 값 (들) = 해당 목록 상자에 대해 선택된 모든 값에 따라 데이터를받습니다.FormCollection을 사용하여 하나의 특정 키에 대해 각 값 가져 오기

하나의 키에 대해 모든 값을 가져 와서 foreach 문 등을 사용하여 각 값에 대해 원하는 작업을 수행하려면 어떻게해야합니까? formcollection에서 사용할 수있는 방법을 보면 그들은

덕분에 ...

답변

7

이 트릭을해야 할뿐만 아니라

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

좋아,이 일을 얻는다 (키) 수 (인덱스) 얻을하지 않았습니다. 그러나 이것을 할 수있는보다 효율적인 수단이 있기를 바랍니까? FormCollection 실제로 NameValueCollection은에서 파생 된 클래스이기 때문에

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

아마 당신은 더 가져 오기 (키) 방법이 없다는 것을 잘못하고 모두가 이름 (또는 키)를 받아 인덱서 속성과 받아들이는 가져 오기 방법이있다 이름 인수.