在开发项目中dropdownlist控件是常用到的控件,它的值的绑定是件比较复杂的事情,所以需要我们仔细且知道它的相关技能点( 深入Web框架-JQuey对CheckBox、RadioButton和DropDownList值操作和事件),要不然很容易出错,在web开发框架中dropdownlist绑定值出现未将对象引用设置到对象的实例的问题是怎么回事?
问题
在项目开发中笔者经常出现下面的错误,和大家共勉:
定位
大家看红色框中的提示,web开发框架绑定selectlist值的是时候报引用Null错误,这个很清楚是我给dropdownlist的绑定值为Null引起的,看下我们前后端的代码:
web前端cshtml页面
@Html.LocalizedDropDownListFor(model => model.BelongedListsTitles, (IList<SelectListItem>)ViewBag.BelongedLists, Model.BelongedListsTitles, "", new { @class = "form-control" })
开发框架后台代码 List<BelongedLists> belongedLists = _belongedListsService.GetAllBelongedLists();
List<SelectListItem> belongedListVB = new List<SelectListItem>();
belongedLists.ForEach(t => { belongedListVB.Add(new SelectListItem { Value = t.Name.ToString(), Text = t.Link }); });
ViewBag.BelongedLists = belongedListVB;
解决
web开发框架里我们可以看到前后端代码的差异,LocalizedDropDownListFor的绑值参数为ViewBag.RelatedLists,而后台赋值参数为ViewBag.BelongedListsTitle,页面执行代码的时候肯定会被报null的错误, 我们把前后端改为一致就可以了。这个在开发中经常会碰到,特别是我们使用dropdownlist控件的相关属性有名称改变时要特别关注下下。
在web开发框架中dropdownlist绑定值出现未将对象引用设置到对象的实例的问题是怎么回事?