ASP.NET MVC アプリケーションがあります。ページ (HTML SELECT) に複数のドロップダウン リストがあり、ユーザーが 1 つずつ選択していくので、それらを無効にする必要があります。ユーザーがそれをコントローラーにポストバックすると、関数 (アクション メソッド) パラメーターとして null が返されます。調べたところ、HTML はフォーム データ内の無効なフィールドの値を送信しないことがわかりました。無効な属性を readonly に置き換えても、ドロップダウンが機能するようにレンダリングされるため、機能しません。
ユーザーの進行に合わせて、JavaScript を使用してドロップダウンを動的に生成しています。そのため、ドロップダウンは 1 つではなく、ユーザーが望むだけあります。
値を取得するにはどうすればよいか教えてください。
ベストアンサー1
1 つの可能性としては、ドロップダウン リストを作成しdisabled="disabled"
、同じ名前と値を持つ隠しフィールドを含めて、この値をサーバーに送信できるようにすることです。
@Html.DropDownListFor(x => x.FooId, Model.Foos, new { disabled = "disabled" })
@Html.HiddenFor(x => x.FooId)
JavaScript を使用してドロップダウンを動的に無効にする必要がある場合は、無効にした直後に、ドロップダウンで現在選択されている値を非表示フィールドに割り当てるだけです。