尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

草稿自动保存——填到一半再也不怕丢
📅 发布时间:2026/7/3 5:19:37

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

在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

相关新闻

  • TEL 3D80-000142-V8射频自动匹配机
  • MBA学员必备AI工具:提升学习效率的实战指南
  • GLM-5、Kimi K2.5、MiniMax M2.7工程选型实战指南

最新新闻

  • GTCFX:把风险提示做到位——标准解读与提示整理
  • 自动驾驶三大传感器物理特性与工程化选型指南
  • Tabby终端架构深度解析:构建现代化统一终端解决方案的技术实践
  • 高效论文精读方法论与工具链实践
  • Claude Fable 5 恢复访问:模型定位、refusal 机制、fallback 与接入核验指南
  • LZ4 的核心解压循环 按照 [Token][字面量溢出][原文][Offset][匹配溢出] 的顺序读取,并还原出原始数据。

日新闻

  • JMeter接口测试实战:从核心元件到复杂场景构建
  • Java Applet版刽子手游戏源码:含完整项目结构、吊杆绘图与胜负逻辑
  • 使用Apache JMeter对RoadRunner PHP应用进行性能测试与调优指南

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号