DropDownListFor的种种纠结(禁止转载)
严重禁止转载,好多爬虫软件为了浏览到处抓东西,真缺德
具有键“CorpType”的 ViewData 项属于类型“System.Int64”,但它必须属于类型“IEnumerable<SelectListItem>"
先吐槽,不是不依赖微软的东西,是我对微软的类库实在有种排斥感,有些东西错了又找不到原因,这个问题就找了5个小时
网上硬是没有解决办法,因为技术总监的缘故就得照着做,无奈~~~~~~
问题如下:
public class CorpModel
{
[Required]
[Display(Name = "公司名称")]
public string CorpName { get; set; }
[Required]
[Display(Name = "公司类型")]
public long CorpType { get; set; }
}
public ActionResult AddCorporation()
{
var temp = dropDownListService.InitCorpTypeDropDownList11();
ViewData["Types"] = new SelectList(temp, "ID", "Name"); ;
return View(corptype);
}
<div class="form-group">
@Html.LabelFor(model => model.CorpType, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(u => u.CorpType,Model.CorpTypeList , "-- Select Contact --", new { @class = "form-control", required = "true" })
@Html.ValidationMessageFor(model => (SelectList)ViewData["Types"], "", new { @class = "text-danger" })
</div>
</div>
第一次调用的时候是没问题的
[HttpPost]
public ActionResult AddCorporation(CorpModel corp)
{
var currentUser = HttpContext.Session[Constants.USER_KEY] as USP.Models.POCO.User; if (ModelState.IsValid)
{
AjaxResult result = sysCorpBll.AddCorporation(corp.CorpName, corp.CorpType, currentUser.SysCorp.ID);
if (result.flag)
{
return RedirectToAction("Corporation", "Corp");
}
}
var temp = dropDownListService.InitCorpTypeDropDownList11();
ViewData["Types"] = new SelectList(temp, "ID", "Name"); ; return View("AddCorporation", corp);
}
第二次就报上面异常了
最终的解决方案
再viewmodel中增加
public IEnumerable<SelectListItem> CorpTypeList { get; set; }
public class CorpModel
{
[Required]
[Display(Name = "公司名称")]
public string CorpName { get; set; }
[Required]
[Display(Name = "公司类型")]
public long CorpType { get; set; } public IEnumerable<SelectListItem> CorpTypeList { get; set; }
}
[HttpGet]
public ActionResult AddCorporation()
{
//var temp = dropDownListService.InitCorpTypeDropDownList11(); //ViewData["Types"] = new SelectList(temp, "ID", "Name"); ;
var temp = dropDownListService.InitCorpTypeDropDownList11();
CorpModel corptype = new CorpModel();
corptype.CorpTypeList = new SelectList(temp, "ID", "Name");
return View(corptype);
} [HttpPost]
public ActionResult AddCorporation(CorpModel corp)
{
var currentUser = HttpContext.Session[Constants.USER_KEY] as USP.Models.POCO.User; if (ModelState.IsValid)
{
AjaxResult result = sysCorpBll.AddCorporation(corp.CorpName, corp.CorpType, currentUser.SysCorp.ID);
if (result.flag)
{
return RedirectToAction("Corporation", "Corp");
}
}
var temp = dropDownListService.InitCorpTypeDropDownList11();
corp.CorpTypeList= new SelectList(temp, "ID", "Name"); return View("AddCorporation", corp);
}
<div class="form-group">
@Html.LabelFor(model => model.CorpType, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(u => u.CorpType,Model.CorpTypeList , "-- Select Contact --", new { @class = "form-control", required = "true" })
@Html.ValidationMessageFor(model => model.CorpType, "", new { @class = "text-danger" })
</div>
</div>
这样就可以避免这种问题了。。。
在前边用了一个Html.DropDownListFor方法渲染控件
结果报异常,用reflector跟了半天,结果调用了MVCForm的IDispose方法,我也是醉了
有一个页面用了同样的方法去调用,没问题,到这里就有了问题,我想了想因为是Dispose了顺便又调用了GC,所以页面要重新加载
所以在调用View的时候就得重新赋值给这里的return View("AddCorporation", corp);是没有DropDownList的数据,以至于报错
DropDownListFor的种种纠结(禁止转载)的更多相关文章
- 【原创】复制知乎“禁止转载”的内容做笔记 - 基于oncopy监听器的简单解决方案
原理:移除所有oncopy的监听器. 使用: 新建书签,地址设为: javascript: getEventListeners(document).copy.forEach(({listener}) ...
- angularjs过滤器(一)------禁止转载------
如果用代码实现:将new Date()转换为 M/D/YY 00:00 格式. 启用过滤器有两种方式:①在HTML中用"|"启用过滤器.格式为{{$scope.property | ...
- 原创:LNMP架构部署个人博客网站 禁止转载复制
nginx编译安装步骤 ①. 检查软件安装的系统环境 cat /etc/redhat-release uname -r ②. 安装nginx的依赖包(pcre-devel openssl-devel) ...
- SQLyog试用到期的解决方法(仅供个人学习使用,禁止转载或用于商业盈利)
作者:EzrealYi 本章链接:https://www.cnblogs.com/ezrealyi/p/12434105.html win+r->输入regedit->进入注册表 在计算机 ...
- 动词 or 名词 :这是一个问题 【转载】
前言:有网友让我用通俗的语言来讲一讲RESTful , 我在这一块工程实践的不太多,有点为难了, 只能讲一讲我的理解, 欢迎大家批评指正.计算机行业最擅长造新词了,像什么AJAX,IoC, AO ...
- [转载] TLS协议分析 与 现代加密通信协议设计
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=time ...
- 【转载】在linux下别用zip 用tar来压缩文件 zip解压后还是utf-8 window10是GBK
3.2 使用 unzip 命令解压缩 zip 文件 将 shiyanlou.zip 解压到当前目录: $ unzip shiyanlou.zip 使用安静模式,将文件解压到指定目录: $ un ...
- 【转载】不得不知道的Python字符串编码相关的知识
原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII charact ...
- 【转载】SOCKS代理:从***到内网漫游
原文:SOCKS代理:从***到内网漫游 本文原创作者:tahf,本文属FreeBuf原创奖励计划,未经许可禁止转载 之前在Freebuf上学习过很多大牛写的关于Tunnel.SOCKS代理.***等 ...
随机推荐
- vbs中的"WScript.Network"[属性与方法]
属性ComputerName 计算机名UserDomain 所属局域网域的域名UserName ...
- ajax 多个参数问题,如何既能表单序列化获取,又能加参数,加全部代码
$.param({'address':address,'delivity':delivity,'payment':payment}) + '&' + $('#card_form').ser ...
- Android开发 listitem中采用倒计时
采用单个倒计时控件会紊乱,故采用在activity中倒计时异步刷新通知的方式全局更新数据源 notifyDataSetChanged 效果如下: 大致思路: 若出现刷新倒计时有的显示有的不显示的情况 ...
- 2、QT分析之QPushButton的初始化
原文地址:http://blog.163.com/net_worm/blog/static/127702419201001003326522/ 在简单的QT程序的第二行,声明了一个QPushButto ...
- thinkphp5的Redis缓存配置
thinkphp采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作.支持的缓存类型包括file.memcache.wincache.sqlite.redis和xcache ...
- C语言实现Linux下删除非空目录
#include <sys/stat.h> #include <dirent.h> #include <fcntl.h> /** * 递归删除目录(删除该目录以及该 ...
- pandas 的算术运算和数据对齐
pandas 还有一个重要的功能,就是他可以对不同索引的对象进行算数运算.对象相加, 如果存在不同的索引对,则结果的索引就是该索引对的并集. 先来个例子 Series In [33]: s1 = Se ...
- Spring面试,IoC和AOP的理解
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...
- 锐捷 Fat/Fit Ap切换
工作中要使用锐捷的AP和AC进行组网.记录一下RG-AP220-E配置成瘦AP的方法. 使用console口连接,baudrate rate: 9600, 8n1 瘦AP:console密码是ruij ...
- e867. 获取和设置外观
To change the look and feel, you need to know the class name of the new look and feel. This example ...