如何解决删除无图片员工记录时的System.ArgumentNullException错误?
解决删除无图片记录时的ArgumentNullException错误
问题场景:数据网格支持不上传图片就保存数据,此时数据库ImageName(对应代码里的Passport字段)为空。删除这类无图片的记录时,抛出错误:
System.ArgumentNullException: 'Value cannot be null. (Parameter 'path3')'
错误根源:代码中直接用order.Passport!强制非空,当Passport为空时,Path.Combine因传入null参数触发异常。
修改后的Delete方法代码:
public IActionResult Delete([FromBody] ICRUDModel<Employee> value) { Employee employee = _context.Employee.Where(c => c.EmployeeId == (int)value.key).FirstOrDefault(); // 仅当Passport不为空时,才处理文件删除逻辑 if (!string.IsNullOrEmpty(employee.Passport)) { var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/Photos", employee.Passport); if (System.IO.File.Exists(filePath)) { System.IO.File.Delete(filePath); } } _context.Employee.Remove(employee); _context.SaveChanges(); return Json(employee); }
修改说明:
- 新增
!string.IsNullOrEmpty(employee.Passport)判断,确保只有当图片文件名存在时,才执行路径拼接和文件删除操作 - 变量名
order改为employee,更贴合业务语义(原代码操作的是Employee实体,变量名更准确)
修改后效果:删除ImageName为空的记录(如Id=2的Maria)时,会跳过文件处理逻辑,直接删除数据库记录,最终数据表格变为:
| Id | EmployeeName | Position | ImageName |
|---|---|---|---|
| 1 | Annah | Admin Assistant | annah.png |
内容的提问来源于stack exchange,提问作者Ken John
相关产品推荐
相关产品推荐

