从DropDownList获取所选项目

时间:2015-12-31 19:23:47

标签: c# asp.net-mvc razor

我使用JavaScript填充名为“groups”的列表。

然后我创建一个DropDownList:

<div class="form-group">
    <div class="col-md-10">
        @Html.DropDownList("groups", new SelectList(string.Empty, "Value", "Text"), "Choose...")
    </div>
</div>

DropDownList显示正常。

我需要做的是将所选的值从“groups”分配给model.group_id。 我不知道如何在控制器方法中获取DropDownList中选择的项目。谢谢你的任何建议。

2 个答案:

答案 0 :(得分:1)

如果您需要将其绑定到group_id,请将其用作名称:

@Html.DropDownList("group_id", ...)

或者,更好的是,使用强类型帮助器:

@Html.DropDownListFor(m => m.group_id, ...)

答案 1 :(得分:0)

假设您的表单中有一个名称为group_id的表单字段,并且您希望出于某种原因将下拉列表中的选定值设置为该字段,

@Html.HiddenFor(s=>s.group_id)  
<div class="form-group">       
  @Html.DropDownList("groups",new SelectList(string.Empty, "Value", "Text"), "Choose...")  
</div>

您可以收听下拉列表的更改事件并获取所选的选项值并设置为group_id

$(function(){

   $("#groups").change(function(e){
      var v=$(this).val();
      $("#group_id").val(v);
   });    

});

我不确定您为什么要通过javascript加载下拉内容,但还有其他更好的方式来呈现下拉列表并将所选值传回控制器,如this post中所述。

SelectedGroup属性添加到视图模型

public class CreateSomethingViewModel
{
  public int SelectedGroup {set;get;}
  public List<SelectListItem> Groups {set;get;}
}

并在您的GET操作中,如果您要加载组,则可以执行此操作

public ActionResult Create()
{
  var vm = new CreateSomethingViewModel();
  //Hard coded for demo. You may replace with your db entries (see below)
  vm.Groups = new List<SelectListItem> {
   new SelectListItem { Value="1","Chase bank" },
   new SelectListItem { Value="2","PNCbank" },
   new SelectListItem { Value="3","BOA" } 
  };
  return View(vm);
}

在你看来

@model CreateSomethingViewModel
@using(Html.BeginForm())
{
  @Html.DropDownListFor(s=>s.SelectedGroup,Model.Groups)
  <input type="submi" />
}

使用此功能,您无需使用任何js代码(即使您通过javascript加载下拉内容),当用户更改下拉选项值时,它将被设置为SelectedGroup属性的值。

[HttpPost]
public ActionResult Create(CreateSomethingViewModel model)
{
  // check model.SelectedGroup
  // to do : Save and return/redirect 
}