1

私の見解では、いくつかの [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_idsssj[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;
        }
4

1 に答える 1

1

自分でコードを書くのではなく、モデル フレームワークにこれを任せたいと思います。あなたのコードから、これをしたくない理由がわかりません。

リストへのモデル バインディングに関する Phil Haack の投稿をご覧ください。

于 2010-05-30T04:12:07.307 に答える