同じ名前の複数の 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
よろしくお願いします。前もって感謝します!