Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc SelectList在MVC DropDownList中返回为null_Asp.net Mvc - Fatal编程技术网

Asp.net mvc SelectList在MVC DropDownList中返回为null

Asp.net mvc SelectList在MVC DropDownList中返回为null,asp.net-mvc,Asp.net Mvc,在MVC RC1表单上使用Html.DropDownList帮助程序时遇到问题 在controller类中,我创建了一个如下所示的SelectList SelectList selectList = new SelectList(db.SiteAreas, "AreaId", "AreaName"); ViewData["AreaId"] = selectList; IEnumerable<SelectListItem> areaList = from area in db

在MVC RC1表单上使用Html.DropDownList帮助程序时遇到问题

在controller类中,我创建了一个如下所示的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;
还是像这样

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;
这与名为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 ..
private static string SelectInternal(此HtmlHelper HtmlHelper、字符串选项标签、字符串名称、IEnumerable selectList、bool usedViewData、bool allowMultiple、IDictionary htmlAttributes)
{
if(String.IsNullOrEmpty(name)){
抛出新ArgumentException(MvcResources.Common_NullOrEmpty,“name”);
}
如果(selectList==null){
抛出新ArgumentNullException(“selectList”);
}  
…方法的其余部分。。
现在我所做的就是将代码从MVC beta 1升级到RC1,突然出现了这种情况。我以前见过对这个SelectInternal方法的引用,但没有具体的解决方案。那么有人能帮我弄清楚为什么会出现这种错误以及如何修复它吗


提前感谢

您是否已升级到RC1刷新

他们已经修复了很多问题。我几乎100%确定我在升级到刷新之前遇到过类似的错误

Dave the Ninja

发现了这一点,多亏了。事实证明,当表单发布回服务器时,验证实际上正在我的控制器上进行,但如果验证失败,控制器会尝试重新显示表单。但是,SelectList在某个位置被设置回null,因此我不得不重新创建SelectList也在那一页上


我不确定这是MVC中的错误还是我自己的错误,但作为参考,这里有解决方案。干杯。

这不是MVC中的错误,而是设计上的错误(AFAIK)

您需要重新设置viewdata并将模型返回到视图


查看数据只存在于当前请求+1(即回发)中。

Ah正确。感谢您提供的信息。我想知道为什么beta 1 MVC中从来没有出现过这个问题?验证模型从beta更改为RC。请参阅我的DDL教程和