正在从下拉列表中获取所选项目
本文关键字:选项 项目 获取 下拉列表 | 更新日期: 2023-09-27 18:28:33
我使用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中选择的项目。谢谢你的建议。
如果您需要它绑定到group_id
,那么使用它作为名称:
@Html.DropDownList("group_id", ...)
或者,更好的是,使用强类型的助手:
@Html.DropDownListFor(m => m.group_id, ...)
假设表单中有一个名称为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加载下拉列表内容,但还有其他更好的方法来呈现下拉列表,并将所选值传回你的控制器,如本文所述。
将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
}