У меня проблемы с использованием помощника Html.DropDownList в форме MVC RC1.
В классе контроллера я создаю список SelectList, подобный этому
SelectList selectList = new SelectList(db.SiteAreas, "AreaId", "AreaName");
ViewData["AreaId"] = selectList;
или как это
IEnumerable<SelectListItem> areaList =
from area in db.SiteAreas
select new SelectListItem
{
Text = area.AreaName,
Value = area.AreaId.ToString(),
Selected = false
};
ViewData["AreaId"] = areaList;
, а затем добавьте его в программу просмотра с помощью этого вызова
<% using (Html.BeginForm())
{ %>
<label for="sitearea">Site Area:</label>
<span class="hint">The menu option to be highlighted when the page is open </span>
<br />
<%= Html.DropDownList("sitearea", (SelectList)ViewData["AreaId"], "Select Area Id")%>
<%= Html.ValidationMessage("sitearea") %>
<br />
<br />
<input type="submit" value="Add New Page" />
<% = Html.AntiForgeryToken() %>
<% } %>
Итак, я добавляю опцию по умолчанию в выпадающий список. Если я запустлю эту страницу и нажму кнопку «Отправить», ничего не делая, я ожидал, что сработает действие POST для этой страницы, и код проверки в этом выпадающем списке сообщит мне, что я не выбрал опцию.
Вместо этого (после присоединения исходного кода MVC к моему проекту) я обнаружил, что получаю ArgumentNullException в selectextensions.cs.
$exception {"Value cannot be null.\r\nParameter name: selectList"} System.Exception {System.ArgumentNullException}
Это относится к методу SelectInternal, который ожидает значение, отличное от нуля, для своего параметра selectList.
private static string SelectInternal(this HtmlHelper htmlHelper, string optionLabel, string name, IEnumerable<SelectListItem> selectList, bool usedViewData, bool allowMultiple, IDictionary<string, object> htmlAttributes)
{
if (String.IsNullOrEmpty(name)) {
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "name");
}
if (selectList == null) {
throw new ArgumentNullException("selectList");
}
.. rest of method ..
Теперь все, что я сделал, - это обновил код с бета-версии MVC до RC1, и вдруг это произошло. Я видел ссылки на этот метод SelectInternal прежде, но не конкретное разрешение. Так может кто-нибудь помочь мне разобраться, почему происходит эта ошибка и как ее исправить?
Заранее спасибо