MVC2 SelectedListItem не привязан к ViewModel
У меня проблема с элементом selectlist, значения которого извлекаются из базы данных.
Он отображает список элементов в представлении, но не передает (POSTing) выбранное значение в модель.
Поэтому, когда пользователь отправляет или страница перезагружается из-за проверки, значение выбора (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")%>
Заранее спасибо за любые указатели!
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;
}
и все будет работать нормально.