2010-05-30 64 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_idsssj對象列表

我的第一個想法是形式收集開始的東西看「[」但我有一種感覺,這心不是正確的......

這是據我得到:

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

我會讓模型框架爲您做這件事,而不是自己編寫代碼。從你的代碼我不能看出你不想這樣做的任何原因。

看看Phil Haack的帖子model binding to a list

+0

謝謝喬爾。試了一下,讓書本程序運行良好。 順序方法似乎是最接近的。 當形式與[0] .title僞提交,[0] .author等 此去: 公衆的ActionResult順序(ICollection的書) { 返回查看(書); } 但事情是(我應該提到這之前)我有一個數據混合。一些像表單元素一樣的名稱和地址以及其他像[0] .sssj_id。我怎樣才能把[]元素從混合中解放出來? – bergin 2010-05-30 13:49:40