ASP.NET MVC中的DropdownList - 未发布值

Mem*_*emo 5 c# asp.net asp.net-mvc razor asp.net-mvc-4

我在ASP MVC(Razor)中有一个表单,在这种形式中我有一个Textboxes ...和a <select>我希望将此选择的选定选项(值)传输给控制器,就像其他信息一样.文本框正确传输到控制器,它位于数据库中.

我在数据库中有一个名为NumberParticipant的字段,我希望通过我的Create控制器传输数据库:

我的代码:

@using (Html.BeginForm())
{
  <div class="form-group">
    @Html.LabelFor(model => model.LocalNumber, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
      @Html.EditorFor(model => model.LocalNumber, new { htmlAttributes = new { @class = "form-control" } })
      @Html.ValidationMessageFor(model => model.LocalNumber)
    </div>
  </div>
  <div class="col-md-10">
    <select class="form-control" id="numberParticipant">
      <option value=""></option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
    </select>
  </div>
  <input type="submit" value="Create" class="btn btn-default" />
}
Run Code Online (Sandbox Code Playgroud)

Ala*_*tes 5

使用MVC DropDownList帮助程序可以避免写出所有的html.这是一个在视图中设置选项值的示例.

<div class="col-md-10">
    @Html.DropDownListFor(model => model.NumberParticipant, 
        new SelectList(new [] 
        { new {value="",text=""},
          new {value="2",text="2"},
          new {value="3",text="3"},
          new {value="4",text="4"},
          new {value="5",text="5"}
    },"value","text"), new { htmlAttributes = new { @class = "form-control" }})
</div>
Run Code Online (Sandbox Code Playgroud)

最佳做法是将SelectList类型的属性添加到模型类,并在那里设置可能的选项.然后,您可以在助手中引用新属性,如下所示:

<div class="col-md-10">
    @Html.DropDownListFor(model => model.NumberParticipant, 
        Model.MySelectList, new { htmlAttributes = new { @class = "form-control" }})
</div>
Run Code Online (Sandbox Code Playgroud)