博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DropDownListFor的种种纠结(禁止转载)
阅读量:6161 次
发布时间:2019-06-21

本文共 3998 字,大约阅读时间需要 13 分钟。

严重禁止转载,好多爬虫软件为了浏览到处抓东西,真缺德

 

具有键“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);        }

 

 

@Html.LabelFor(model => model.CorpType, htmlAttributes: new { @class = "control-label col-md-2" })
@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" })

 第一次调用的时候是没问题的

[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
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);        }

 

@Html.LabelFor(model => model.CorpType, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.DropDownListFor(u => u.CorpType,Model.CorpTypeList , "-- Select Contact --", new { @class = "form-control", required = "true" }) @Html.ValidationMessageFor(model => model.CorpType, "", new { @class = "text-danger" })

 这样就可以避免这种问题了。。。

 

 

在前边用了一个Html.DropDownListFor方法渲染控件

结果报异常,用reflector跟了半天,结果调用了MVCForm的IDispose方法,我也是醉了

有一个页面用了同样的方法去调用,没问题,到这里就有了问题,我想了想因为是Dispose了顺便又调用了GC,所以页面要重新加载

所以在调用View的时候就得重新赋值给这里的return View("AddCorporation", corp);是没有DropDownList的数据,以至于报错

 

你可能感兴趣的文章
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
使用SanLock建立简单的HA服务
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>