传入字典的模型项的类型为“Demo.Models.HomeModels.StudentModel”,但此字段需要类型“Demo.HomeModels.Students”的模型项

本文分享了一个在MVC5框架中遇到并解决的BUG经验,涉及视图与控制器间的数据传递问题,通过调整参数类型及数据处理方式,成功解决了编辑功能的实现难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先这是我上班以来遇到的第一个我可以解决的BUG,有幸在此分享一下(内心也是无比的有成就感的)

先来看一下我的BUG

 

 

MVC5 视图页顶头代码片段

@{
    Layout = null;
}
@model Demo.Models.HomeModels.Students
<!DOCTYPE html>


控制器代码片段


/// <summary>
        /// 编辑
        /// </summary>
        /// <param name="id">根据id</param>
        /// <returns></returns>
        public ActionResult EditInfo(int id)
        {
            var student = model.Student.FirstOrDefault(x => x.Id == id);
            var studentmodel = ObjectMapperManager.DefaultInstance.GetMapper<Student, Students>().Map(student);
            return View(studentmodel);
        }
        [HttpPost]
        public JsonResult EditInfo(StudentModel studentmodel)
        {
            var entity = ObjectMapperManager.DefaultInstance.GetMapper<StudentModel, Student>().Map(studentmodel);
            entity.Createtime = DateTime.Now;
            model.Entry(entity).State = EntityState.Modified;
            model.SaveChanges();
            return Json("修改成功");
        }

因为,我使用的是CodFirst实体数据模型,可能有的同学和我的问题不太一样,如果有耐心看完呢一定会给你一个惊喜

第一种:和控制器相关,

       解决思路:所以就要找一下是不是控制器参数的类型是不是和View里的相同,如果不同的话就会报此类错误

第二种:如果你在控制器里面写了数据,那么,view里面就不要写数据了,

解决方案:就是把返回的view视图里面的数据去掉,直接return view();

第三种:传入字典的模型项的类型为“System.Boolean”,但此字典需要类型“InternalCRM.EntityIACrm.Template”的模型项。

   解决思路:解决办法是修改传入的参数,原来return View("Index",(new EmailTempMgr().Update(Temp)));   ,new EmailTempMgr().Update(Temp) 返回的是bool,与事实不符,此处应该传的是类型

希望对大家有所帮助!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值