2016-11-17 13 views
-1

私はクエリから取得したデータを表示し、それぞれのビューで入力ボックスを配置しています。ビュー内にオブジェクトの配列を動的に作成

これは私のフォームの中の部分図です。

<input type="hidden" name="people.index" value="0" /> 
<input type="text" name="people[0].firstname" /> 
<input type="text" name="people[0].lastname" /> 

問題は、私はトラブル"DisplayFor"の名前と"DropDownList"

+0

コントローラでそのロジックを処理する必要があります。あなたのコントローラでは、データリストを(例えば)ViewBag.Seatsに割り当て、ビューでは、dropdownfor(その項目)を使用する単一のモデル項目を表示するための通常の構造を使用し、ViewBag.Seatsをそのソースにします。 – nocturns2

+0

ええ、コントローラにドロップダウンリストが作成されています。 ViewBag.CrewIDです。しかし、問題は上記のコードを投稿すると、VehicleAndCrew [] vehicleAndCrewを探すことです。私はビューが正確に何個あるか知っていないので、viewBag項目の動的な数を作成することはできません。 –

+0

私はまだあなたの意図を理解していませんが、あなたのコントローラにリストまたは配列を作成した場合は、ViewBag.CrewCountを介して常にリスト数(またはarray.length)を渡すことができます。 – nocturns2

答えて

0
の操作を持っていますということです。私はポストによる配列として読み取るためにこの種のものを達成しようとしています

@model IEnumerable<Project.Models.VehicleTypeSeat> 
@using PagedList.Mvc; 
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" /> 
@{ 
    int counter = 0; 
} 
<p> 

</p> 


    <table> 
     <tr> 
      <th> 
       <div class="editor-field"> 
        Crew 
       </div> 
      </th> 
      <th> 
       Description 
      </th> 

     </tr> 
@{ 
    @for (var item in model) 
    { 
      <tr> 
       <input type="hidden" name="raceSeats.index" value="@(counter)" /> 
       <td> 
        @Html.DropDownList(item.CrewID, null, "--Select Crew Member--", htmlAttributes: new { @class = "form-control", @name = "raceSeats["[email protected]+"].PersonID" }) 
       </td> 

       <td> 
    @Html.DisplayFor(modelItem => item.VehicleTypeSeatDescription) 
</td> 



      </tr> 
      counter += 1; 
     } 

    </table> 
} 

私は質問を完全に理解しているかどうかはわかりませんが、モデルにバインドし直したいときは、foreachが問題を引き起こす可能性があります。代わりに試してください

@for (int i = 0; i < model.Count(); i++) 
{ 
    // reference each item by index 
    @Html.DropDownListFor(model[i].CrewID, 
     null, "--Select Crew Member--", htmlAttributes: new { @class = "form-control"}) 

} 
関連する問題