.NET中如何让子对象B关联到其父对象A?
.NET父子对象反向关联问题解决办法
你遇到的问题是因为ASP.NET的模型绑定不会自动为子对象建立反向的父对象引用——HTTP请求只携带了B对象的Name属性数据,并没有包含AItem的相关信息,所以绑定后B的AItem自然是null。要解决这个问题,最直接的方式是在控制器接收到模型后手动为每个B对象赋值父对象:
- 在处理POST请求的控制器方法中,遍历A的
BItems集合,将每个B的AItem属性设置为当前的A实例:
[HttpPost] public IActionResult SubmitModel(A model) { if (ModelState.IsValid) { // 为每个子对象绑定父引用 foreach (var bItem in model.BItems) { bItem.AItem = model; } // 这里可以添加后续业务逻辑,比如保存到数据库 } return View(model); }
另外需要注意:不要在视图中尝试提交AItem的信息,这不仅会增加请求冗余数据,还可能带来不必要的安全风险。这种父子对象的反向关联属于服务器端的业务逻辑处理,在模型绑定完成后手动建立是最合理的方案。
内容的提问来源于stack exchange,提问作者Tamo
相关产品推荐
相关产品推荐

