将formCollection数组转换为控制器中的对象

时间:2010-05-30 02:21:45

标签: asp.net asp.net-mvc object formcollection

在我的视图中我有几个[n] .propertyName数组字段我想将formCollection字段转换为对象myobject [n] .propertyName,当它转到控制器时。

所以例如,上下文:

查看:

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 sssj对象列表

我的第一个想法是在表单集中查找以“[”开头的内容,但我觉得这不对......

这是我得到的:

 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 个答案:

答案 0 :(得分:1)

我会让模型框架为您执行此操作,而不是自己编写代码。从你的代码中我看不出你不想这样做的任何理由。

model binding to a list上查看Phil Haack的帖子。