如何将无关联ArWoo表数据传递到Buchungen控制器的Create视图
问题根因
代码中Where()方法返回的是IQueryable<ArWoo>类型的查询集合,并非单个ArWoo实体对象,因此无法直接通过AR.Bestellnummer读取字段值。你在断点处看到的AR“已正确赋值”是EF Core延迟执行的特性,此时仅构造了查询表达式,还未实际从数据库加载实体数据。
修复方案
1. 调整控制器查询逻辑,取单个实体
使用FirstOrDefault()/SingleOrDefault()方法执行查询并获取匹配ID的单个实体,同时补充边界校验:
// GET: Buchungen/Create_AR public IActionResult Create_AR(int? id) { if (id == null) { return NotFound(); } // 取匹配ID的单个实体,触发查询执行 var AR = _context.ArWoo .FirstOrDefault(n => n.Id == id); if (AR == null) { return NotFound(); } ViewData["Bestellnummer"] = AR.Bestellnummer; return View("Create"); }
2. 视图端绑定预填充值
如果你的Create视图是强类型绑定Buchungen模型,有两种可选实现方式:
- 直接读取ViewData赋值给表单控件:
<input asp-for="Bestellnummer" value="@ViewData["Bestellnummer"]" />
- 更推荐的类型安全写法:直接构造视图模型传递到视图,不需要依赖ViewData
控制器代码调整:
// 构造Buchungen实体并赋值预填充字段 var buchung = new Buchungen() { Bestellnummer = AR.Bestellnummer }; // 将模型传入视图 return View("Create", buchung);
视图端直接用标签助手绑定即可自动渲染预填充值:
<input asp-for="Bestellnummer" />
内容的提问来源于stack exchange,提问作者Paul_412
相关产品推荐
相关产品推荐

