Вы назвали свои выпадающие списки "шлемами" и "гаражами", если вы отлаживаете свое действие и смотрите словарь formValues
, вы должны увидеть эти два значения.
В качестве альтернативы вы можете изменить свою модель насвойство "Шлемы" и "Гаражи" типа int?и связыватель модели должен заполнить эти значения.
Или вы можете изменить свое действие на что-то вроде:
public ActionResult Create(Event trackday, int? helmets, int? garages, FormCollection formValues)
Это должно быть заполнено идентификатором (выбранное значение) из выпадающего списка.
Обновление
Вот мой код, который получает значения либо из коллекции, либо из переданных свойств:
HTML:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: ViewData["helmetsCollectionValue"]%></h2>
<h2><%: ViewData["helmetsProperty"]%></h2>
<h2><%: ViewData["garagesCollectionValue"]%></h2>
<h2><%: ViewData["garagesProperty"]%></h2>
<% using (Html.BeginForm()) { %>
<p>
<%: Html.DropDownList("helmets", (SelectList)ViewData["size"], "--select--")%>
</p>
<p>
<%: Html.DropDownList("garages", (SelectList)ViewData["garages"], "--select--")%>
</p>
<p>
<input type="submit" value="Submit" />
</p>
<% } %>
</asp:Content>
Контроллер:
public ActionResult Index()
{
var helmets = Enumerable.Range(1, 200).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["helmets"] = new SelectList(helmets.ToList(), "Value", "Text");
// dropdown for garages
var garages = Enumerable.Range(1, 50).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["garages"] = new SelectList(garages.ToList(), "Value", "Text");
return View();
}
[HttpPost]
public ActionResult Index(FormCollection collection, int? helmets, int? garages)
{
ViewData["helmetsCollectionValue"] = collection["helmets"];
ViewData["helmetsProperty"] = helmets;
ViewData["garagesCollectionValue"] = collection["garages"];
ViewData["garagesProperty"] = garages;
var helmetsList = Enumerable.Range(1, 200).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["helmets"] = new SelectList(helmetsList.ToList(), "Value", "Text");
// dropdown for garages
var garagesList = Enumerable.Range(1, 50).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["garages"] = new SelectList(garagesList.ToList(), "Value", "Text");
return View();
}