【问题标题】:How to get DropDownList SelectedValue in Controller in MVC and store it in a variable [duplicate]如何在MVC的Controller中获取DropDownList SelectedValue并将其存储在变量中[重复]
【发布时间】:2017-09-14 12:52:57
【问题描述】:

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

这是我的代码:

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"];

我在控制器中有一个错误:

【问题讨论】:

  • 虽然这个问题已经结束并且访问者被重定向到一个适当的答案,但我认为这里的原始问题源于 ApiController 的角色和常规 MVC Controller 类之间的混淆是有用的.您似乎使用的是 WebAPI ApiController 类而不是 MVC 控制器类。如果您使用后者(控制器),您的代码就可以了。我测试了它。因为您正在寻求通过网页上的交互式表单从访问者那里获得价值,所以坚持使用 MVC Controller。 ApiController 用于编写 REST-ful 接口。

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


【解决方案1】:

您应该将@Html.DropDownListFor 用于select1

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

例如,

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

ViewModel 将可用于您的 Controller 方法。

为了填充下拉菜单的选项,您需要创建一个SelectList 并使用SelectListItems 填充它。

【讨论】:

  • 谢谢,我应该在哪里创建一个 SelectList 并用 SelectListItems 填充它?
  • @ysfibm 您可以在 Controller 中创建它并在 ViewModel 上设置它,也可以内联创建它。前者更好。
【解决方案2】:

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

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

关于使用的更多信息可以在MSDN找到。

【讨论】:

  • 我试过这个:var selectedOption = HttpContext.Current.Request.FormRequest.Form["select1"];我有一个错误:名称 HttpContext 在当前上下文中不存在
  • 在这种情况下,您将错过 using System.Web 的导入。
猜你喜欢
  • 1970-01-01
  • 2015-03-10
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2015-09-20
相关资源
最近更新 更多