如何在MVC中的Controller中获取DropDownList SelectedValue并将其存储在变量中

时间:2017-09-14 12:52:57

标签: c# html asp.net asp.net-mvc visual-studio

我有下拉列表,我想从视图中获取所选值并将其存储在控制器中的变量中,以便重复使用它。

这是我的代码:

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

2 个答案:

答案 0 :(得分:2)

您应该@Html.DropDownListFor使用select1

这会将其绑定到ViewModel中的属性。

例如,

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

ViewModel将可用于您的Controller方法。

要为您的下拉列表填充选项,您需要创建SelectList并使用SelectListItems填充它。

答案 1 :(得分:1)

菲利普是对的。您应该使用默认数据绑定器将值填充到ViewModel中。尽管如此,在ApiController中读取POST数据的更快但不推荐的方法是使用: -

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

有关使用情况的更多信息,请访问MSDN