同じ名前の複数の DropDownList を読み込むときに問題が発生します。ここにコードを添付します。
意見:
@{
int i = 1
foreach (var queue in Model.Queues)
{
using (Html.BeginForm("ChangeQueueState", "Home", FormMethod.Post))
{
List<SelectListItem> sli = ViewBag.states[i - 1];
<div>@Html.DropDownList("state", sli)</div>
}
}
i++
}
ビュー内には、表示していないコードがさらにあります。
私のコントローラーでは、対応するキューの状態を変更し、各キューの正しい状態が「選択済み」の状態のリストを含むViewBag.states
リストをロードするだけです。SelectedListItem
問題は、ビューが読み込まれると、すべてDropDownLists
が最後に変更された状態で読み込まれることです。たとえば、5 番目のキューを「オープン」から「クローズ」に変更DropDownLists
すると、すべてが「Closed
」オプションが選択された状態で表示されます (ただし、DB では変更が正しく適用されます)。
DropDownList
この問題は、MVC が名前と関連するものの間で行うバインディングによるものだと思いますがSelectListItem
、DDL 名を に変更することはできません。これは、状態がコントローラー"state" + @i
の ' ' メソッドで受け取った引数にバインドされているためです。ChangeQueueState
よろしくお願いします。前もって感謝します!