ASP.NET MVC视图要求GuestListViewModel却传入GuestList模型报错求解
问题排查与解决方案
错误根因
问题出在GuestListController的CreateUpdate方法验证失败分支,代码如下:
else { return View("Index", new GuestList()); }
Index.cshtml明确声明了所需模型类型为FYP_RSVP_MGMT.ViewModels.GuestListViewModel,但该分支传入的是GuestList实体类实例,类型不匹配直接触发了报错。
修复方案
将验证失败时返回的模型替换为正确的GuestListViewModel实例,同时保留用户已填写的表单内容,避免用户操作丢失:
else { // 若需要保证Guest列表数据为最新,可重新查询赋值 using (var db = DbHelpers.GetConnection()) { guest.Guests = db.Query<GuestList>("Select * From GuestList").ToList(); } return View("Index", guest); }
其他优化建议
- 更新逻辑中调用的
TryUpdateModelAsync为异步方法,当前未添加await关键字会导致更新逻辑不生效,可改为同步方法TryUpdateModel,或给CreateUpdate方法添加async修饰符、返回类型改为Task<IActionResult>,调用异步方法时添加await。 - 新增Guest时通过
guest.Guests.Count生成ID的逻辑不可靠,存在Guest数据删除后ID重复的风险,建议改为数据库主键自增生成ID。
内容的提问来源于stack exchange,提问作者user14986000
相关产品推荐
相关产品推荐

