Asp.net.Mvc表单提交遇模型类型不匹配错误,如何解决?
问题解决:Asp.Net MVC表单提交模型类型不匹配错误
错误信息
InvalidOperationException:传入ViewDataDictionary的模型项类型为'FormValidation.Models.Entity.Personel',但该ViewDataDictionary实例需要类型为'System.Collections.Generic.IEnumerable`1[FormValidation.Models.Entity.Personel]'的模型项。
问题原因
Post视图声明的模型是IEnumerable
解决方案
方案1:修改控制器,传递人员集合给Post视图
如果业务逻辑需要在Post视图展示集合数据,修改控制器的Post方法,将单个Personel对象包装成集合:
[HttpPost] public IActionResult Post(Personel personel) { // 可先执行数据存储等业务操作 var personelList = new List<Personel> { personel }; return View(personelList); }
方案2:修改Post视图,接受单个Personel模型
如果Post视图仅需展示当前提交的单个人员数据,直接修改视图的模型声明:
@model FormValidation.Models.Entity.Personel <p>@Model.Name</p> <p>@Model.Surname</p> <p>@Model.Age</p> <p>@Model.City</p>
补充说明
原Index视图的模型声明和表单逻辑是正确的,因为表单提交的是单个Personel对象。具体选择哪种方案,取决于你的实际业务需求:需展示多条数据选方案1,仅展示当前提交数据选方案2。
内容的提问来源于stack exchange,提问作者Sinan
相关产品推荐
相关产品推荐

