我使用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中选择的项目。谢谢你的任何建议。
答案 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
}