You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST Action验证后Modal工作异常、SelectLists无法加载问题

修复方案

后端代码问题修复

1. 下拉框数据源错误

库存校验失败的else分支中,司机下拉框ViewBag.DriverId错误绑定了产品表作为数据源,应该统一使用用户表:

// 原错误代码
ViewBag.DriverId = new SelectList(db.Products.ToList(), model.DriverId);
// 修改为
ViewBag.DriverId = new SelectList(db.Users.ToList(), model.DriverId);

2. SelectList构造参数错误

所有SelectList初始化都缺少值字段、显示字段两个必填参数,导致下拉框无法正常渲染:

// 原错误写法
ViewBag.ProductId = new SelectList(db.Products.ToList(), model.ProductId);
// 修改为,第二个参数为选项值对应的表字段名,第三个为选项显示文本对应的表字段名,替换为你实际的字段名即可
ViewBag.ProductId = new SelectList(db.Products.ToList(), "Id", "ProductName", model.ProductId);
ViewBag.DriverId = new SelectList(db.Users.ToList(), "Id", "UserName", model.DriverId);

前端Modal异常修复

错误返回后样式丢失是提交逻辑问题:

  • Modal内的表单必须用Ajax异步提交,拿到后台返回的局部视图内容后,直接替换Modal内的表单容器,不能做页面跳转或者全页替换,否则会丢失Modal的外层结构和样式。
  • 替换局部内容后,重新初始化表单验证组件,保证错误提示可以正常显示。

冗余代码优化(可选)

你当前代码在ModelState.IsValid判断内外重复写了ViewBag赋值逻辑,可以把这部分逻辑统一提到最后,只在库存校验失败的分支添加错误提示即可,减少重复代码。

内容的提问来源于stack exchange,提问作者Ahmed Naeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:42:01