不存在具有键“xxxId”的“IEnumerable<SelectListItem>”类型的 ViewData 项
项目中的某个页面,在访问时出现以下错误:
不存在具有键“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!=)
{
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
不存在具有键“xxxId”的“IEnumerable<SelectListItem>”类型的 ViewData 项的更多相关文章
- 不存在具有键“test”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
x 很简单的一个问题,有时候提示语已经写得很清楚了, 但是自己那时候就是"鬼迷心窍"了吧··· 解决方案 public PartialViewResult Edit() { vie ...
- 报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>"
报错:具有键"..."的ViewData项属于类型"...",但它必须属于类型"IEnumerable<SelectListItem>&q ...
- mvc之验证IEnumerable<T> 类型,多选框验证
原文:mvc之验证IEnumerable<T> 类型,多选框验证 假设我们有这么一种需求,我们要同时添加年级和年级下面的多个班级,我们一般会像下面这种做法. Action中我们这样接收: ...
- 具有键“XXX”的 ViewData 项属于类型“System.Int32”,但它必须属于类型“IEnumerable<SelectListItem>
原因是Edit视图中有@Html.DropDownListFor(m => m.BirthdayAD... 但是没有从Controller中没有设置值
- linq之将IEnumerable<T>类型的集合转换为DataTable类型 (转载)
在考虑将表格数据导出成excel的时候,网上搜的时候找到一个特别合适的公共方法,可以将query查询出来的集合转换为datatable 需引用using System.Reflection; publ ...
- mvc之验证IEnumerable<T> 类型
假设我们有这么一种需求,我们要同时添加年级和年级下面的多个班级,我们一般会像下面这种做法. Action中我们这样接收: [HttpPost] public ActionResult CreateGr ...
- 设置主外键时 ORA-02298: 无法验证 - 未找到父项关键字 --NOVALIDATE;
主要原因是: 在添加CONSTRAINT的时候,默认是需要VALIDATE表中的已有数据的. 你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入. ...
- EF将IEnumerable<T>类型转换为Dictionary<T,T>类型
x 无标题 #region 博客Code {DBEntities}生成EFModel的时候自己命名的 using ({DBEntities} db = new { DBEntities }()) { ...
- 使用EF code first和asp.net mvc4遇到的问题总结
最近使用EF code first和asp.net mvc4做项目,遇到些问题,记录一下. 一.EF code first 生成外键列问题. 一般情况下,都是先写一个int型外键id属性,然后写一个外 ...
随机推荐
- webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件
配置文件如下 /** * Created by oufeng on 2017/5/6. */ const webpack = require('webpack'); const path = requ ...
- Network-Emulator Network-Emulator-Toolkit网络模拟器使用详细介绍
Network-Emulator-Toolkit网络模拟器使用详细介绍 by:授客 QQ:1033553122 原理介绍 图1 如上图,一个ADSL用户通过modem连接到网络,通过网络应用如IE,M ...
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 前台request 获取body的格式是正确的 (2018-03-23 16:44:22) 但是Java 后台却格式化成了yyyy-MM-dd的格式 巨坑(@InitBinder搞得贵)
最近做项目时,同事写的功能总是格式化时间不正确,Java类属性明明注解了@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 但就是硬 ...
- JavaWeb:jsp
本文内容: JSP的介绍 jsp的使用 EL表达式 JSTL的使用 首发日期:2018-06-18 JSP的介绍: JSP全称Java Server Pages. 与静态网页格式的html不同的是,j ...
- Python之随机梯度下降
实现:# -*- coding: UTF-8 -*-""" 练习使用随机梯度下降算法"""import numpy as npimport ...
- JDBC-Statement,prepareStatement,CallableStatement的比较
参考:https://www.cnblogs.com/Lxiaojiang/p/6708570.html JDBC核心API提供了三种向数据库发送SQL语句的类: Statement:使用create ...
- [20170623]利用传输表空间恢复数据库2.txt
[20170623]利用传输表空间恢复数据库2.txt --//继续上午的测试,测试truncate,是否可行,理论讲应该没有问题.我主要的目的测试是否要切换日志.--//参考链接 : http:// ...
- Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
在主工程(ASP.NET WEB/WCF等)的NuGet里引用 System.Data.SQLite.Core 不仅仅是Service需要引用,主工程即使不直接使用SQLite的库,也需要引用. 若使 ...
- python第十九天——感冒中
ConfigParser模块,hashlib模块,hmac模块: 创建配置文件: import configparser config = configparser.ConfigParser()#创建 ...
- linux系统运行状态检查
目录 1 CPU状态检查 1.1 运行时间 1.2 CPU占用率 1.3 单核占用率 2 内存状态检查 2.1 内存占用率 2.2 交换分区占用率 3 磁盘状态检查 3.1 系统磁盘容量占用率 3.2 ...