2010-05-30 5 views
1

на мой взгляд У меня есть несколько полей массива [n] .propertyName. Я хочу повернуть поля formCollection в объекты myobject [n] .propertyName, когда он переходит к контроллеру.Преобразование formCollection массива в объекты в контроллере

так, например, контекст:

Вид:

foreach (var item in Model.SSSubjobs.AsEnumerable()) 

<%: Html.Hidden("["+c+"].sssj_id", item.sssj_id) %> 
<%: Html.Hidden("["+c+"].order_id", item.order_id) %> 
<%: Html.TextBox("["+c+"].farm", item.farm %> 
<%: Html.TextBox("["+c+"].field", item.field %> 

c++; 

Контроллер:

Я хочу взять выше [0] .sssj_id и превращаются в sssj [0 ] .sssj_id или a Список объектов sssj

Моя первая идея состояла в том, чтобы посмотреть в коллекции форм для вещей, начиная с «[», но у меня есть чувство, что это Isnt право ...

это, насколько я получил:

public IList<SoilSamplingSubJob> extractSSSJ(FormCollection c) 
     { 
      IList<SoilSamplingSubJob> sssj_list=null; 
      SoilSamplingSubJob sssj; 


       var n=0; 
       foreach (var key in c.AllKeys) // iterate through the formcollection 
       { 
        var value = c[key]; 

        if(key.StartsWith("[")) // ie turn [0].gps_pk_chx into sssj.gps_pk_chx 
         ??? 
       } 



      return sssj_list; 
     } 

ответ

1

Я бы пусть модельная структура сделает это для вас, вместо того, чтобы писать код самостоятельно. Из вашего кода я не вижу причин, по которым вы не хотели бы этого делать.

Посмотрите сообщение Фила Хаака на странице model binding to a list.

+0

Спасибо, Джоэл. Пробовал и получил книгу, чтобы работать нормально. последовательный метод, казалось, был ближе всего. , когда форма была отправлена ​​с [0] .title, [0] .author и т.д. это говорит: общественного ActionResult Sequential (ICollection книги) { возвращение View (книги); } но вещь (я должен был упомянуть об этом раньше). У меня есть смесь данных. некоторые сильные элементы формы, такие как имя и адрес, и другие, такие как [0] .sssj_id. как я могу взять [] элементы из микса? – bergin