假设您的表单中有一个名称为 group_id 的表单字段,并且出于某种原因您希望将下拉列表中的选定值设置为该字段,
@Html.HiddenFor(s=>s.group_id)
<div class="form-group">
@Html.DropDownList("groups",new SelectList(string.Empty, "Value", "Text"), "Choose...")
</div>
可以监听下拉的change事件,获取选中的选项值并设置为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
}