我在使用MVC RC1表单上的Html.DropDownList助手时遇到了问题。SelectList在MVC中返回为null DropDownList
在控制器类,我创建这样
SelectList selectList = new SelectList(db.SiteAreas, "AreaId", "AreaName");
ViewData["AreaId"] = selectList;
一个的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() %>
<% } %>
所以我也在Dropdownlist中添加了一个默认选项。如果我运行这个页面并且没有做任何事情就点击提交按钮,我预计这个页面的POST动作会触发,并且在这个下拉列表中的验证代码告诉我我没有选择一个选项。相反,(在将MVC源代码附加到我的项目之后),我发现我在selectextensions.cs中得到一个ArgumentNullException。
$exception {"Value cannot be null.\r\nParameter name: selectList"} System.Exception {System.ArgumentNullException}
这涉及到一个名为SelectInternal的方法,它的selectList参数需要一个非null值。
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 beta 1升级到RC1,并且突然间出现了这种情况。我以前见过对此SelectInternal方法的引用,但没有具体的解决方法。所以任何人都可以帮我弄清楚为什么会出现这个错误以及如何解决它?
在此先感谢
查看我的DDL教程http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc和http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc。aspx – RickAndMSFT 2012-02-14 19:22:15