MVC コントローラーで選択された DropDownList 値を取得します
このガイドは、MVC コントローラー内の DropDownList から選択された値にアクセスするという一般的な課題に対処します。
問題: MVC コントローラー アクションの DropDownList からユーザーの選択を効率的にキャプチャします。
コントローラーのアクション (初期アプローチ):
次のコードは、FormCollection
を使用した最初の試行を示しています。
<code class="language-csharp">[HttpPost] public ActionResult ShowAllMobileDetails(MobileViewModel MV) { string strDDLValue = Request.Form["ddlVendor"].ToString(); // Using FormCollection return View(MV); }</code>
モデル:
<code class="language-csharp">public class MobileViewModel { public List<tbInsertMobile> MobileList; public SelectList Vendor { get; set; } }</code>
ビュー (部分):
<code class="language-html"><table> <tr> <td>Mobile Manufacturer</td> <td>@Html.DropDownList("ddlVendor", Model.Vendor, "Select Manufacturer")</td> </tr> </table></code>
解決策:
方法 1: Request.Form
または FormCollection
を使用する (あまり推奨されません):
は機能しますが、文字列操作への依存と型安全性の欠如のため、Request.Form
への直接アクセスは一般にあまり推奨されません。 上記のコードはすでにこのメソッドを示しています。
方法 2: モデル バインディング (推奨):
このアプローチでは、MVC のモデル バインディング機能を利用して、よりクリーンで保守性の高いソリューションを実現します。
MobileViewModel
に追加します:<code class="language-csharp">public class MobileViewModel { // ... existing properties ... public string SelectedVendor { get; set; } }</code>
Html.DropDownListFor
を使用して、DropDownList を新しい SelectedVendor
プロパティにバインドします:<code class="language-html">@Html.DropDownListFor(m => m.SelectedVendor, Model.Vendor, "Select Manufacturer")</code>
MV.SelectedVendor
プロパティに自動的に入力されます:<code class="language-csharp">[HttpPost] public ActionResult ShowAllMobileDetails(MobileViewModel MV) { string strDDLValue = MV.SelectedVendor; return View(MV); }</code>
方法 3: 値とテキストの両方を取得する (上級):
選択した値 とそれに対応するテキスト の両方を取得するには、隠しフィールドと jQuery が必要です。
<code class="language-csharp">public class MobileViewModel { // ... existing properties ... public string SelectedVendor { get; set; } public string SelectedVendorText { get; set; } }</code>
<code class="language-javascript">$(function () { $("#SelectedVendor").on("change", function () { $("#SelectedVendorText").val($(this).find(":selected").text()); }); });</code>
<code class="language-html">@Html.DropDownListFor(m => m.SelectedVendor, Model.Vendor, "Select Manufacturer") @Html.HiddenFor(m => m.SelectedVendorText)</code>
これで、MV.SelectedVendor
(値) と MV.SelectedVendorText
(テキスト) の両方がコントローラーで使用できるようになります。 ビューに jQuery ライブラリを忘れずに含めてください。 これは最も堅牢なソリューションです。
ニーズとコーディング スタイルに最適なソリューションを選択してください。 モデル バインディング (方法 2 および 3) は、その明確さと保守性の点で通常推奨されます。
以上がMVC コントローラーでドロップダウンリストの選択された値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。