首頁 >後端開發 >C++ >如何在 MVC 控制器中擷取 DropDownList 的選取值?

如何在 MVC 控制器中擷取 DropDownList 的選取值?

Barbara Streisand
Barbara Streisand原創
2025-01-14 11:44:14882瀏覽

How to Retrieve a DropDownList's Selected Value in an MVC Controller?

在 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>

解:

方法一:使用Request.FormFormCollection(不太推薦):

雖然功能強大,但由於依賴字串操作且缺乏類型安全性,直接存取 Request.Form 通常不太受歡迎。 上面的程式碼已經示範了這個方法。

方法二:模型綁定(建議):

這種方法利用 MVC 的模型綁定功能來提供更乾淨、更易於維護的解決方案。

  1. 增強您的模型: 將屬性加到您的 MobileViewModel 以專門保存所選供應商的值:
<code class="language-csharp">public class MobileViewModel 
{
    // ... existing properties ...
    public string SelectedVendor { get; set; }
}</code>
  1. 更新您的視圖: 使用 Html.DropDownListFor 將 DropDownList 綁定到新的 SelectedVendor 屬性:
<code class="language-html">@Html.DropDownListFor(m => m.SelectedVendor, Model.Vendor, "Select Manufacturer")</code>
  1. 精緻的控制器操作:現在,所選值將自動填入MV.SelectedVendor屬性中:
<code class="language-csharp">[HttpPost]
public ActionResult ShowAllMobileDetails(MobileViewModel MV)
{           
   string strDDLValue = MV.SelectedVendor;
   return View(MV);
}</code>

方法 3:檢索值與文字(進階):

要取得所選值其對應的文本,您需要一個隱藏欄位和一些jQuery。

  1. 擴充模型: 新增屬性來儲存所選供應商的文字:
<code class="language-csharp">public class MobileViewModel 
{
    // ... existing properties ...
    public string SelectedVendor { get; set; }
    public string SelectedVendorText { get; set; }
}</code>
  1. 新增 jQuery: 在視圖中包含 jQuery,並在 DropDownList 選擇變更時使用它來更新隱藏欄位:
<code class="language-javascript">$(function () {
    $("#SelectedVendor").on("change", function () {
        $("#SelectedVendorText").val($(this).find(":selected").text());
    });
});</code>
  1. 將隱藏欄位加入檢視中:
<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 控制器中擷取 DropDownList 的選取值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn