又一个新手问题。 ; - )
我正在设置我的视图模型 this very helpfull post:
public class My_IndexModel
{
...
public IEnumerable<SelectListItem> My_DropDownList { get; set; }
...
}
请注意我使用
IEnumerable<SelectListItem>
能够设置选定的属性。
下拉列表值在控制器中设置:
public ActionResult Index()
{
...
var DropDownList_Values = from value in My_DB.Value
select new SelectListItem
{
Selected = (value.IsDefault == 1),
Text = value.Value1,
Value = value.Value1
};
...
var viewModel = new My_IndexModel
{ ...
My_DropDownList = DropDownList_Values.ToList(),
...
}
...
return View(viewModel);
}
表示我的ViewData模型包含(在我的情况下)下拉列表。
此外,下拉列表显示在我的网站(* .aspx)中,如下所示:
<%: Html.DropDownList("MyDropDownListField",
new SelectList(Model.My_DropDownList as IEnumerable,
"Value",
"Text",
Model.My_DropDownList
)
)%>
到目前为止没问题。
在网站上(* .aspx)我有一个简单的“提交”按钮,它返回所有数据。 我在这里获取提交事件:
[HttpPost]
public ActionResult Index(My_IndexModel model)
{
if (ModelState.IsValid)
{
... model.My_DropDownList ...
}
}
但是DropDownList是空的!
必须采取哪些措施才能获得所选的下拉列表值 在[HttpPost]方法中?
答案 0 :(得分:1)
您需要将一个与DropDownList
同名的属性添加到正在接收帖子的控制器中使用的模型。如果名称匹配,框架将把选定的值放入匹配的模型属性中。
您应该查看使用Html.DropDownListFor
帮助程序。
有关更多信息,请参阅此问题,当我遇到问题找出在MVC中实现DropDownList的最佳方法时,我发布了一段时间: