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

Blazor模型默认值失效:为何需手动设置IsDeleted为false?

问题原因分析及解决思路

你遇到的这个问题,主要有几种可能的原因,逐个排查就能解决:

  • 前端请求不小心传了IsDeleted为true
    控制器里的Tag参数是从前端请求体反序列化来的,如果前端提交的JSON里带了"IsDeleted": true,反序列化后的对象该属性就是true,自然需要手动覆盖。你可以在控制器方法里加个断点,查看接收的tag对象的IsDeleted值,就能确认是不是这个问题。

  • EF Core实体配置有误
    如果你的DbContext在OnModelCreating里给IsDeleted设置了数据库默认值为true(比如写了modelBuilder.Entity<BaseEntity>().Property(x => x.IsDeleted).HasDefaultValue(true)),虽然C#类里默认是false,但如果EF Core判断属性值和数据库默认值一致,可能不会把这个值传到SQL里,导致数据库用自己的默认值插入。这种情况检查下DbContext的配置就行。

  • 序列化/模型绑定配置异常
    要是你自定义了JSON序列化器的配置(比如System.Text.Json或者Newtonsoft.Json),有些特殊配置可能会把请求里没传的布尔属性设为true,但默认配置不会出现这种情况。可以检查下项目里的序列化配置代码。

  • 子类初始化逻辑覆盖了默认值
    看看Tag类有没有自定义构造函数,或者在其他初始化代码里修改了IsDeleted的值,要是子类里显式改了这个属性,BaseEntity的默认值就被覆盖了。

快速排查步骤

  1. 给控制器的CreateTag方法加断点,查看传入的tag.IsDeleted实际值;
  2. 检查前端提交的请求体JSON,确认是否包含IsDeleted字段;
  3. 核对DbContext里的实体配置,确保IsDeleted的数据库默认值设置正确;
  4. 检查Tag类的构造函数和初始化代码,有没有修改IsDeleted的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:13:11