Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具
访问GitHub获取最新代码 使用VS.NET 2013打开项目文件,完成编译 进行安装,完成后VS.NET中将新增“Web Forms Scaffolding”组件 新建Web Forms项目,选择Code-First Entity Framework 创建Product实体类,示例代码如下:
发布日期:2025-06-20 03:42:42
浏览次数:8
分类:精选文章
本文共 3073 字,大约阅读时间需要 10 分钟。
Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具
项目概述
本工具通过修改GitHub上开源项目,扩展了原始作者的工作,实现了一对多实体类的增删改查操作,并采取了Repository设计模式。同时,页面布局进行了优化,新增了DynamicData动态字段。该工具适用于VS.NET 2013及以上版本的Web Forms项目,能够根据事先定义的Entity类自动生成查询、新增、修改和删除页面及后台操作。
安装与使用
安装步骤
项目创建
public class Product{ public int Id { get; set; } [Display(Name = "商品编码")] [MaxLength(10)] [Required] public string SKU { get; set; } [Display(Name = "品名")] [MaxLength(50)] [Required] public string Name { get; set; } [Display(Name = "规格")] [MaxLength(20)] public string Model { get; set; } [Display(Name = "单位")] [MaxLength(10)] public string Unit { get; set; } [Display(Name = "单价")] public decimal Price { get; set; } [Display(Name = "数量")] public int Qty { get; set; }} - 创建Company和Department实体类,实体间建立一对多关系,代码示例如下:
- 使用“Add New Scaffolding Item”创建新的操作页面
- 选择Product模型,输入模板文件路径
- 生成页面后,系统会自动生成 Repositories文件夹下的Repository实现类
- Extensions文件夹包含自定义控件扩展
- Projects文件夹下自动生成五个操作页面:List、Create、Edit、Delete、Details
- T4模板支持的中文显示存在问题,生成代码可能出现乱码。
- 在多个子表使用Bootstrap Tabs控制时,切换Tab无法保持停留在当前选项卡。
- 在T4模板中避免使用中文字符或使用额外的编码处理。
- 使用其他Tab控制方式或自定义JavaScript实现多Tab切换功能。
public class Company{ public Company() { Departments = new HashSet (); } [Key] [Display(Name = "系统编码")] public int Id { get; set; } [Display(Name = "公司名称")] [MaxLength(10)] [Required] public string Name { get; set; } [Display(Name = "地址")] [MaxLength(50)] public string Address { get; set; } [Display(Name = "联系人")] [MaxLength(10)] public string ContactName { get; set; } [Display(Name = "联系电话")] [MaxLength(20)] public string ContactPhone { get; set; } public virtual ICollection Departments { get; set; }}public class Department{ public Department() { } [Key] [Display(Name = "系统编码")] public int Id { get; set; } [Display(Name = "部门名称")] [Required] [MaxLength(20)] public string Name { get; set; } public int Company_Id { get; set; } [ForeignKey("Company_Id")] public virtual Company Company { get; set; }} 路由配置
在App_Start目录下的RouteConfig.cs中添加以下路由配置:
public static class RouteConfig{ public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings { AutoRedirectMode = RedirectMode.Permanent }; routes.EnableFriendlyUrls(settings); // 添加路由配置 var defaultModel = new MetaModel(true); defaultModel.RegisterContext(new ModelProvider( () => new WebAPP.Models.MyDbContext(), new ContextConfiguration { ScaffoldAllTables = true } )); }} 动态数据字段
项目目录下DynamicData文件夹支持添加新的动态字段(如DateTime),使GridView和编辑页面更加灵活。
界面操作
CRUD操作
页面展示
编译后运行项目,访问相关页面即可完成数据操作。新增页面支持文件上传和数据验证,修改页面保留所有动态字段信息。
存在的问题
解决方案
通过以上步骤,可以轻松完成ASP.NET Web Forms项目的CRUD操作,充分发挥Repository模式的优势。
发表评论
最新留言
表示我来过!
[***.240.166.169]2026年06月11日 11时14分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php 反射
2023-02-27
PHP 实现N阶矩阵相乘
2023-02-28
php 延迟静态绑定static关键字
2023-02-28
Redis入门
2023-02-28
PHP 截取字符串乱码的解决方案
2023-02-28
php 接口类与抽象类的实际作用
2023-02-28
PHP 插入排序 -- 折半查找
2023-02-28
PHP 支持8种基本的数据类型
2023-02-28
php 放大镜,放大镜放大图片效果
2023-02-28
PHP 数据库连接池实现
2023-02-28
php 数组 区别,PHP中数组的区别
2023-02-28
PHP 数组怎么添加一个元素
2023-02-28
PHP 文件操作
2023-02-28
php 文字弹幕效果代码,HTML5文字弹幕效果
2023-02-28
php 时间日期函数,获取今天开始时间,结束时间
2023-02-28
php 标准规范
2023-02-28
PHP 浮点型精度运算相关问题
2023-02-28
php 浮点型计算精度问题
2023-02-28
php 特定时间段统计,jpgraph某个时间段的数据统计
2023-02-28
php 生成csv mac下乱码
2023-02-28