不存在具有键“xxxId”的“IEnumerable<SelectListItem>”类型的 ViewData 项
2017-11-10 14:51
465 查看
项目中的某个页面,在访问时出现以下错误:
具体的场景说明如下:
一个编辑页,其中某下拉控件绑定值为来自model对象中的一个List<SelectListItem>集合属性。具体看下面:
Ⅰ、前端视图页面的代码
Ⅱ、后端控制器中返回视图的action
1)当_SubitemTypeAppService.SubitemTypeList()返回集合不为空时,访问页面下拉控件不会报错;
2)当_SubitemTypeAppService.SubitemTypeList()返回集合为空时,访问页面时,下拉控件会报文章开头的错
原因:当返回为空值时,则Model.SubitemTypeList为null值,当然不能转化为 List<SelectListItem>下拉项。
处理方式为修改页面绑定的值的方式,当为null时增加一个为空的默认项
在网上查找时,发现还有一种情况也会出现以上报错:http://bbs.csdn.net/topics/380095463
ASP.NET MVC 3 常用
不存在具有键“xxxId”的“IEnumerable<SelectListItem>”类型的 ViewData 项
具体的场景说明如下:
一个编辑页,其中某下拉控件绑定值为来自model对象中的一个List<SelectListItem>集合属性。具体看下面:
Ⅰ、前端视图页面的代码
@Html.DropDownListFor(p => p.SubitemTypeId,(Model.SubitemTypeList as List<SelectListItem>), new { @class = "form-control" })
Ⅱ、后端控制器中返回视图的action
public ActionResult EditSubitem(long? id) { var entObj = new SubitemModel();//初始化基础数据 if (id!=null&&id!=0) { entObj = _SubitemAppService.GetSubitem(id.Value); } entObj.SubitemTypeList = _SubitemTypeAppService.SubitemTypeList();//返回List<SelectListItem>的集合 return View(entObj); }
1)当_SubitemTypeAppService.SubitemTypeList()返回集合不为空时,访问页面下拉控件不会报错;
2)当_SubitemTypeAppService.SubitemTypeList()返回集合为空时,访问页面时,下拉控件会报文章开头的错
原因:当返回为空值时,则Model.SubitemTypeList为null值,当然不能转化为 List<SelectListItem>下拉项。
处理方式为修改页面绑定的值的方式,当为null时增加一个为空的默认项
@Html.DropDownListFor(p => p.SubitemTypeId, Model.SubitemTypeList==null?new List<SelectListItem> { new SelectListItem { Text="无选项",Value=""} } : (Model.SubitemTypeList as List<SelectListItem>), new { @class = "form-control" })
在网上查找时,发现还有一种情况也会出现以上报错:http://bbs.csdn.net/topics/380095463
ASP.NET MVC 3 常用
相关文章推荐
- 不存在具有键“test”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
- 具有键“XXX”的 ViewData 项属于类型“System.Int32”,但它必须属于类型“IEnumerable<SelectListItem>
- 不存在具有“AppType”的“IEnumerable<SelectListItem>”类型的 ViewData 项
- 具有键“Shape”的 ViewData 项属于类型“System.String”,但它必须属于类型“IEnumerable<SelectListItem>”。
- 报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>"
- 具有键×××的 ViewData 项属于类型System.String,但它必须属于类型IEnumerable<SelectListItem>
- There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key ''.
- IEnumerable<T>转换为IList<SelectListItem>
- List<T>.Contains(T item)为什么我把两封一样的邮件经分析后一模一样的数据mail_data先后导入进去,第2封信还是会加到mailList里去 ?? 搞不懂..
- hibernate 返回List<Map>, List<xxx>对象列表类型
- 扩展方法IEnumerable<T>转换为IList<SelectListItem> ,提供@Html.DropDownList使用
- 无法跨越程序集边界使用程序集“DataCheck, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“List<ILayer>”,因为该类型有一个为嵌入互操作类型的泛型类型参数
- c#List泛型数据扩展,把List<>型数据格式化成List<SelectListItem>,用来作dropdownlist的数据
- Assigning to ‘id<UIWebViewDelegate>’ from incompatible type 'xxxViewController *const __strong'
- MVC后台返回List<int>ViewData, 前台接受
- Hql的select 语句返回Ilist<object[]>类型,如何转换为映射类型
- c#List泛型数据扩展,把List<>型数据格式化成List<SelectListItem>,用来作dropdownlist的数据
- Sending 'ViewController' to Parameter of Incompatible Type 'id<xxxDelegate>'
- Xcode编译警告Assigning to 'id<XXXDelegat> ——Nullable' from incompatible type 'XXXView *const_strong'
- 工作总结 a标签 <a href="/meetingtheme">Back to List</a> 返回上一级 指向 控制器 默认Index @Html.ActionLink("Edit59", "Edit", new { id = item.ID }) 默认当前控制器