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

为何If条件失效,无法调用注入的_sysautoController?

问题分析

你当前的代码只检查了传入的Model.Reference是否为空字符串,但没有验证数据库中是否已存在该Reference,这就导致如果用户传入了一个数据库里不存在的Reference,代码也不会触发自动生成逻辑,和你想要的“数据库未找到则生成”需求不符。

修正方案

要实现需求,你需要在判断条件里同时做两件事:

  • 检查Model.Reference是否为空/空白字符串
  • 检查数据库中是否不存在对应Reference的记录

修正后的代码示例

[HttpPost]
public IActionResult ConfirmDetails(RTSLIST Model)
{
    if (ModelState.IsValid)
    {
        // 判断:Reference为空/空白,或者数据库中找不到该Reference的记录
        bool shouldGenerateReference = string.IsNullOrWhiteSpace(Model.Reference) 
                                       || !_dbContext.RTSLIST.Any(r => r.Reference == Model.Reference);

        if (shouldGenerateReference)
        {
            // 调用生成方法,务必将生成结果赋值给Model.Reference
            Model.Reference = _sysautoController.Index(1, Model.IdNo);
        }

        // 根据业务场景,将修改后的Model保存到数据库
        _dbContext.RTSLIST.Update(Model); // 新增场景用Add,更新场景用Update
        _dbContext.SaveChanges();
    }  

    return View(Model); // 返回对应视图或结果
}

关键注意点

  • 用string.IsNullOrWhiteSpace代替string.IsNullOrEmpty,能同时过滤全空白字符的情况
  • 必须添加数据库查询逻辑!_dbContext.RTSLIST.Any(...)来验证Reference是否存在
  • 调用生成方法后,一定要把生成的Reference赋值给Model.Reference,否则生成的ID不会被持久化
  • 最后记得执行数据库保存操作,确保修改生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:33:11