2

同じ名前の複数の 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

よろしくお願いします。前もって感謝します!

4

1 に答える 1

0

ドロップダウンリストごとに異なる名前を使用する必要があると思います。各キューには異なる ID があると仮定して、代わりに次のコードを使用してみてください。

<div>@Html.DropDownList("state" + queue.ID, sli)</div>

もちろん、コレクション内のどれがどれであるかを区別する必要があります。私はこれをかなり頻繁に行います。うまくいくことを願っています。

于 2012-12-20T03:10:10.630 に答える