我遇到了一个selectlistitem的问题,正在从数据库中检索其值。
它显示视图中的项目列表,但不会将所选值传递(POST)到模型中。
因此,当用户提交或由于验证而重新加载页面时,选择值(PositionApplied)为空。
有谁可以给我一些关于我哪里出错的指示?
在我的控制器中:
[HttpGet]
public ActionResult Index()
{
PopulateJobsDropdown();
return View();
}
private void PopulateJobsDropdown()
{
IEnumerable<SelectListItem> items = _service.GetJobs()
.Select(c => new SelectListItem
{
Value = c.JobID.ToString(),
Text = c.JobTitle
});
ViewData["PositionApplied"] = items;
}
在我的ViewModel
中 public IEnumerable<SelectListItem> PositionApplied { get; set; }
在我的视图中
<%=Html.DropDownList("PositionApplied")%>
提前感谢任何指针!
答案 0 :(得分:1)
那么,获取
的代码行在哪里ViewData["PositionApplied"] = items;
到
public IEnumerable<SelectListItem> PositionApplied { get; set; }
类似的东西:
this.PositionApplied = ViewData["PositionApplied"] as IEnumerable<SelectListItem>;
您可以在视图中轻松使用:
<%
IEnumerable<SelectListItem> PositionApplied =
ViewData["PositionApplied"] as IEnumerable<SelectListItem>;
%>
...
<%= Html.DropDownList("myDropDOwnId", PositionApplied) %>
或者MVC2下是否存在一些我不知道的自动化事件?当我使用我一直给你的例子时。
<强>加强>
为了避免Linq to Entities错误(如果您正在使用它),请将您的方法更改为
private void PopulateJobsDropdown()
{
IQueryble<Your_Table> jobs = _service.GetJobs();
List<SelectListItem> items = new List<SelectListItem>();
foreach(var job in jobs)
items.add(new SelectListItem
{
Value = c.JobID.ToString(),
Text = c.JobTitle
});
ViewData["PositionApplied"] = items;
}
一切都会正常。