Это то, что мои классы модели данных выглядит следующим образом:Два источника данных в одном создать вид
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Position Position { get; set; }
}
public class Position
{
public string Title { get; set; }
}
У меня есть создать представление, где я хочу иметь два текстовых поля для имени и фамилии, а затем который имеет название позиции. Я пытался делать это так:
View (только соответствующая часть):
<p>
<label for="Position">Position:</label>
<%= Html.DropDownList("Positions") %>
</p>
Контроллер:
//
// GET: /Employees/Create
public ActionResult Create()
{
ViewData["Positions"] = new SelectList(from p in _positions.GetAllPositions() select p.Title);
return View();
}
//
// POST: /Employees/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Employee employeeToAdd)
{
try
{
employeeToAdd.Position = new Position {Title = (string)ViewData["Positions"]};
_employees.AddEmployee(employeeToAdd);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
Однако, когда я нажимаю отправить, я получаю это исключение:
System.InvalidOperationException was unhandled by user code
Message="There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Positions'."
Я уверен, что я делаю это неправильно. Каков правильный способ заполнения раскрывающегося списка?
P.S. вам не хватает 's' в вашей'
Что такое атрибут for? –
он должен соответствовать этикетке с вводом. Это для большей доступности, например, для людей, использующих экранные считыватели, чтобы они знали, что они должны заполнять. Произошло ли изменение, которое я предложил? – Funka