1
のasp.net MVCでは、複数行のデータバインディング部分的)モデル:SelectListのは、私は、オブジェクトのリストを持っているところ、私は問題を持っている
public List<MenuProduct> MenuProducts { get; set; }
public SelectList ContractTypes { get; set; }
public SelectList Contracts { get; set; }
そして、私はこのようなビューでそれらを結合しています:
@for (int i = 0; i < Model.MenuProducts.Count(); i++)
{
<tr>
<td>@Html.TextBoxFor(x => x.MenuProducts[i].Title, new { @class = "form-control" })</td>
<td>@Html.TextBoxFor(x => x.MenuProducts[i].Factor, new { @class = "form-control" })</td>
<td>@Html.TextBoxFor(x => x.MenuProducts[i].JointFactor, new { @class = "form-control" })</td>
<td>@Html.DropDownListFor(x => x.MenuProducts[i].ContractTypeID, Model.ContractTypes, new { @class = "form-control" })</td>
<td>@Html.DropDownListFor(x => x.MenuProducts[i].ContractID, Model.Contracts, new { @class = "form-control" })</td>
</tr>
}
問題は、データが読み込まれたときに、契約と契約タイプに共有リストを使用しているため、選択リストが決して適切な値で選択されないということです。
私はこのような部分図に各項目を移動した場合:このモデルでは
@for (int i = 0; i < Model.MenuProducts.Count(); i++)
{
@Html.RenderPartial("_MenuProductItemPartialView", new MenuProductItemModel() { Item = Model.MenuProducts[i], ContractTypes = Model.ContractTypes, Contracts = Model.Contracts})
}
:
public MenuProduct Item { get; set; }
public SelectList ContractTypes { get; set; }
public SelectList Contracts { get; set; }
選択リスト内の値は正しいですが、その後、私は持つことができません一度にすべての行を更新する外部ページのボタン - 少なくとも、私はそれを行う方法を知らない。
私の質問は、セレクトリストを最初の方法(List<MenuProduct>
をポストバックできる場所)で動作させるにはどうすればよいのですか?また、それぞれの部分から2番目の方法ですべての更新データを収集する方法は?任意の行または多数の行から変更されたデータが存在する可能性があるためです。
この質問は技術的に重複していますが(私は検索時にそれを見つけられませんでしたが)、あなたの答えは直接であり、IMOは理解しやすくなります。 –