2017-09-14 41 views
0

我有dropdownlist,我想從視圖中獲取選定的值並將其存儲在控制器中的一個變量中以重用它。如何在MVC控制器中獲取DropDownList SelectedValue並將其存儲在變量中

這裏是我的代碼:

Index.cshtml

@using (Html.BeginForm("Register", "Home", FormMethod.Post)) 
{    

    <table style="text-align: left; width: 900px; height: 160px;" border="0" cellpadding="2" cellspacing="2"> 
     <tbody> 
      <tr> 
       <td style="width: 559px;"> 
        <select id="select1" name="select1"> 
         <option value="1">1 BAL Active</option> 
         <option value="2">2 BAL Actives</option> 
         <option value="3">3 BAL Actives</option> 
         <option value="4">4 BAL Actives</option> 
         <option value="5">5 BAL Actives</option> 
         <option value="6">6 BAL Actives</option> 
        </select> 
       </td> 
      </tr> 

     </tbody> 
    </table> 
<button type="submit" class="btn btn-default">Register </button> 
} 

在我的控制器我已經添加一個變量來獲得所選擇的值:

Controller.cs

var selectedOption = Request["select1"]; 

我在控制器中有錯誤: enter image description here

+0

儘管此問題已關閉,訪問者正在被重定向到適當的答案,但我認爲有必要指出的是,此處的原始問題源於ApiController的角色與常規MVC Controller類之間的混淆。您似乎正在使用WebAPI ApiController類而不是MVC控制器類。如果你使用後者(控制器),你的代碼會很好。我測試了它。因爲您正在通過網頁上的交互式表單尋求訪客的價值,請堅持使用MVC *控制器*。 ApiController用於編寫REST-ful接口。 – ShieldOfSalvation

回答

2

對於select1,您應該使用@Html.DropDownListFor

這會將它綁定到ViewModel中的一個屬性。

例如,

@Html.DropDownListFor(m => m.select1, m.SelectListOptions) 

視圖模型將提供給您的控制器方法。

爲了填充下拉選項,您需要創建SelectList並使用SelectListItems填充它。

+0

謝謝,我應該在哪裏創建一個SelectList並用SelectListItems填充它? – ysfibm

+0

@ysfibm你可以在控制器中創建它,並將其設置在ViewModel上,或者你可以直接創建它。前者更好。 –

1

菲利普是對的。您應該使用默認的數據綁定器將值填充到ViewModel中。儘管如此,更快但並非推薦的讀取ApiController中的POST數據的方法將使用: -

HttpContext.Current.Request.FormRequest.Form["select1"]

有關使用的更多信息,請參見MSDN

+0

我試過這個:var selectedOption = HttpContext.Current.Request.FormRequest.Form [「select1」]; 我有一個錯誤:名稱HttpContext在當前上下文中不存在 – ysfibm

+0

在這種情況下,您錯過了使用System.Web的導入。 – Zephyr

相關問題