当前位置: 首页 > news >正文

草稿自动保存——填到一半再也不怕丢

一、一个属性,开启草稿功能

AdminTable组件上加上EnableDraft="true"

<AdminTable TItem="Article" TKey="long" EnableDraft="true" DraftAutoSaveInterval="30"> <!-- 表格列配置 --> </AdminTable>
属性类型默认值说明
EnableDraftboolfalse是否启用草稿自动保存
DraftAutoSaveIntervalint30草稿自动保存间隔(秒)

就这么简单。一行额外代码都不用写。

二、体验是什么样的?

场景1:新增文章

你打开「新增文章」弹窗,填写标题、正文、分类……刚写到一半,电脑死机了。

重启后回到后台,再次点击「新增文章」——

弹窗会提示:检测到未保存的草稿,是否恢复?

点击确定,之前填的内容全部回来了。

场景2:编辑文章

你正在修改一篇长文,改了十几处,电话来了。你关掉浏览器去接电话。

回来再次编辑这篇文章,同样会提示你恢复草稿。

新增和编辑的草稿是分开保存的,不会互相覆盖。

三、智能清理,不打扰

草稿不是无脑存,有几个智能逻辑:

  • 无变化不存:如果表单数据和上次保存时一模一样,不会重复存
  • 新增时没填任何内容:不保存、不提示、不打扰
  • 编辑时没改动数据:自动清理该条草稿
  • 提交成功后:自动删除草稿
  • 体积控制:草稿 JSON 会忽略导航属性,只存外键,避免超过 localStorage 限制

你需要它的时候它在,不需要它的时候它不碍事。

四、背后的技术原理

草稿数据存在浏览器的localStorage里,不占用服务器资源。

  • 每30秒自动保存一次(可自定义间隔)
  • 恢复时从 localStorage 读取,反序列化后回填表单
  • 每次保存/恢复都经过序列化处理,支持复杂对象

序列化优化:

AdminTable使用 Newtonsoft.Json 处理草稿序列化,默认配置为:

private static readonly JsonSerializerSettings _draftJsonOptions = new() { PreserveReferencesHandling = PreserveReferencesHandling.Objects, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Ignore };

为了控制 JSON 体积,建议给实体类的导航属性加上[JsonIgnore]

public class Article : EntityFull { public long? ClassifyId { get; set; } [JsonIgnore] // 草稿序列化时忽略导航属性,只存外键 public Classify Classify { get; set; } public string Title { get; set; } }

这样草稿里只有ClassifyId,没有完整的Classify对象,体积大幅减小。

即使 Blazor Server 的 SignalR 连接断开,草稿也安全地躺在本地。

五、适用场景

场景为什么需要草稿
长表单(文章、产品、订单)填一次十几分钟,丢了很崩溃
网络不稳定环境公共WiFi、移动网络经常断
临时走开电话、会议、下班……回来继续填
复杂编辑需要反复修改、预览,随时能保存

凡是需要用户输入的地方,草稿都有价值。

六、与其他功能的联动

  • 配合代码生成器:生成的页面天然支持草稿,无需改造
  • 配合关联表:外键下拉选中的值也会被草稿保存
  • 配合多语言:多Tab表单每个Tab都能草稿保存

草稿功能是AdminTable的内置能力,所有基于AdminTable的页面自动获得。

七、对比一下

对比项传统开发EasyAdminBlazor
手动实现草稿需要写localStorage读写、序列化、恢复逻辑,至少200行代码一个属性
区分新增/编辑要自己管理不同key自动区分
智能清理自己判断何时删草稿自动处理

你花一行配置的时间,省下半天重复造轮子的精力。

八、下一步

草稿功能已经内置,你只需要开启EnableDraft="true"

如果你还没试过,今天就体验一下:

dotnet new install EasyAdminBlazor.Templates dotnet new easyadmin -n MyProject cd MyProject dotnet run
http://www.jsqmd.com/news/1113366/

相关文章:

  • 暑假里中小学生学编程?这可能是他“开窍”的第一步
  • 上班族养车省心法:浏阳工业园区车辆保养选择逻辑
  • 智能视频解析:如何让AI像人类一样理解视频内容
  • 一文吃透 2026 网络安全六大变革趋势,覆盖攻防、合规、云安全全维度,企业安全布局精准参考指南
  • TEL 3D80-000142-V8射频自动匹配机
  • MBA学员必备AI工具:提升学习效率的实战指南
  • GLM-5、Kimi K2.5、MiniMax M2.7工程选型实战指南
  • Webshell攻防实战:从原理到企业级纵深防御体系构建
  • LemoPresentation-AI驱动的智能汇报与演示平台
  • AI辅助编程实战:用有限差分法求解悬臂梁挠度
  • AI模型版本与机器人性能的真相:识别技术谣言与事实边界
  • 现代化水库矩阵平台数字化建设:从数据治理到“四预“业务闭环
  • OpenClaw与微信生态集成实战指南
  • AI教材写作大揭秘!高效工具助力,轻松实现低查重教材编写!
  • 第一次装修别急着开工!这6件事没想清楚,后期很容易
  • [RoundedPolygon节点]原理解析与实际应用
  • 117、asyncio 异步编程(三):异步上下文管理器、异步迭代器、异步生成器
  • 第一章LangChain概述与环境准备(上)
  • 2026年番禺管理者演讲口才培训,究竟适合哪些人?
  • 虚幻引擎UE5.8 MCP设置指南
  • 兰亭妙微 | ui设计保姆级教程!4 个技巧,轻松打造吸睛创意 Toast 设计
  • 企业微信官方群机器人无法在外部群主动发消息?教你用非官方API打破限制
  • 厂房装修报价单上的“文字游戏”:这3个地方不写清楚,签了就是签了
  • 从零开始构建AI Agent:核心概念与开发实践
  • 第一章Netty,NIO 多线程优化分析
  • 告别手工台账与数据割裂:拆解企业忽视 eHR 选型标准带来的人力成本损耗
  • 做工控品质实打实唠,这厂家用过才知道有多省心
  • Trae IDE与Playwright MCP:用自然语言驱动智能网页自动化测试
  • AI编程助手生产级选型指南:上下文理解与代码就绪度实战评测
  • 智慧校园运维升级:智能锁身份核验与通断电联动方案落地实践