☰
用ASP.NET MVC开发通讯录系统:EF建表、CRUD与部署避坑
2026/10/11 14:19:11 网站建设 项目流程

简介:这是一份 C# ASP.NET 通讯录系统完整项目,面向初次接触 .NET Web 开发的初学者,帮助理解基于 Web 的联系人管理应用从界面到数据库的完整实现。项目使用 C# 与 ASP.NET Web Forms 构建服务器端逻辑,SQL Server 数据库存储联系人信息,涵盖增删改查、分组管理与登录验证等典型功能。压缩包共 92 个文件,包含 27 个 .cs 源码文件、19 个 .aspx 页面文件、25 个 .gif 图片素材,以及数据库文件、样式表和配置文件等,整体大小约 5.53MB,目录结构清晰,便于按模块对照学习。目前已有 300 人下载学习。通过这套源码,可以一边运行一边拆解页面事件、业务逻辑与数据库交互方式,同时参考其 Visual Studio 2005 环境下的项目组织方式和 ADO.NET 数据访问写法,是巩固 Web 开发基础的不错实例。

1. 一个“C# ASP.NET 通讯录”,为什么值得你亲手做一遍

“C# ASP.NET 通讯录”是很多人学 Web 开发碰到的第一个完整项目,但能把它做到能交付、能部署、别人敢往里录真数据的人并不多。大多数版本停在“本机跑得欢,换个环境就白屏”“录十个联系人没事,录到一千个就卡成幻灯片”的状态。这篇笔记把我平时做这类内部系统的完整套路讲清楚:从字段设计、技术选型、EF 建表,到增删改查、搜索分页、导出名单,再把最常翻车的几个场景单独拎出来复盘。新手可以照着一步步做出能运行的项目,熟手也能在参数设置和部署边界上找到有用的提醒。

  1. 适合刚学完 C# 基础、想独立走通一个 Web 全流程的初学者。
  2. 适合要把通讯录改造成团队内部工具,但担心数据安全和维护成本的开发者。
  3. 也会聊到上线前容易忽略的细节——那一部分对做过一两个项目的人同样有价值。

2. 动手前先想清楚:通讯录的信息模型与 ASP.NET 技术选型

很多人打开 IDE 就写代码,写到一半发现字段不够用、查询逻辑别扭,再回头改表结构。通讯录虽然简单,但信息模型和技术路线最好先定下来,后面几乎所有代码都围绕这两个决定展开。

2.1 联系人数据模型:字段怎么定,哪些是刚需

联系人字段我通常按“必填 + 高频 + 扩展”三档来分。必填只有两个:姓名和手机号。高频包括邮箱、公司、地址、生日、备注。扩展字段比如头像、分组、标签,可以等第一版跑通后再加,不要一开始就陷入字段设计的完美主义。

下面是我常用的联系人表结构,直接照着建即可:

字段C# 类型数据库类型说明
Idintint 主键自增无业务意义主键
Namestringnvarchar(20)联系人姓名
GenderGender 枚举int0 未知,1 男,2 女
Phonestringnvarchar(20)手机或座机号码
Emailstringnvarchar(100)邮箱
Companystringnvarchar(50)公司名称
Addressstringnvarchar(200)通讯地址
BirthdayDateTime?datetime 可空生日,可空
Remarkstringnvarchar(500)备注
CreatedAtDateTimedatetime创建时间,排序用

手机号这里特别说一下,我坚持用字符串而不是 bigint。原因有两个:手机号可能带 +86 前缀,固话可能带分机号;数值类型会丢掉开头的 0,比如某些短号。另一个原因是搜索场景,用户输入“138”就希望匹配所有以 138 开头的号码,只有字符串才能方便地做 LIKE 查询。

生日字段用可空类型 DateTime?,因为现实里确实有人不愿意填生日。性别用枚举而不用 bool,是因为很多表单需要“未设置”这个初始态,bool 只有两个值,会在页面下拉框里造成歧义。CreatedAt 看起来不起眼,却是列表排序的稳定依据——联系人经常重名,不能用姓名排序。

这里有个新手容易踩的点:给 Name 加唯一索引。通讯录不是用户系统,多个同名人完全合法,加唯一索引会导致第二个“张三”录不进去。唯一性约束只应该放在真正需要的地方,比如后面章节要给手机号做去重时再加。

2.2 ASP.NET MVC 还是 Web Forms:我为什么选 MVC 5

ASP.NET 生态里老项目很多是 Web Forms,但新写的内部工具类项目,我基本都选 MVC 5。两者本质差别在页面组织方式上,下面是关键对比:

维度Web FormsMVC 5
页面机制事件驱动 + ViewState 回发请求驱动 + Model 绑定
HTML 控制力控件生成,难调完全手写视图
测试难度逻辑耦合页面,难单测Controller 可独立测
技能迁移转 .NET Core 学习成本高转 ASP.NET Core 几乎平迁

通讯录这种以列表、表单、搜索为主要交互的系统,MVC 的优势非常明显:每个页面就是一个 Action,请求参数通过 Model 绑定自动变成强类型对象,省去 Request.Form["name"] 这种字符串取值,也天然规避了手工拼 SQL 的冲动。

另外,MVC 的 Razor 视图对 HTML 输出默认编码,用户在备注里写

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询