开发环境:VS2015RC
实例内容: 会员报名以及报名信息的查询和审核管理
教程编写目的: 新入职的程序员快速掌握MVC开发过程
提纲:
一. 建立数据模型(AC_ContestantAuditionsUserInfo.cs)和逻辑代码(AC_ContestantAuditionsUserInfoDAO.cs)。
二. 建立业务层逻辑代码(例如增、删、改、查)。
三.建立业务接口层代码(对于业务层逻辑代码的接口映射)
四. 建立视图。
五. 建立控制器。
六. 运行效果展示。
下面开始正文:
一。 数据库建模。
项目结构如下图:

图1
1. 建模(AC_ContestantAuditionsUserInfo.cs)

代码:
public class AC_ContestantAuditionsUserInfo:BaseEntity { ///// <summary> ///// 此表的主键Id,但因为继承了公共类里的Id,所以这里可以不需要,但如没有继承BaseEntity,则需写出此字段。 ///// </summary> //public int Id { get; set; } /// <summary> /// 选手会员ID /// </summary> public int UserId { get; set; } /// <summary> /// 选手联系电话 /// </summary> public string UserPhone { get; set; } /// <summary> /// 选手真实姓名 /// </summary> public string TrueName { get; set; } /// <summary> /// 选手性别 /// </summary> public bool UserSex { get; set; } /// <summary> /// 选手年龄 /// </summary> public int UserAge { get; set; } /// <summary> /// 选手被点击次数 /// </summary> public int Click { get; set; } /// <summary> /// 选手照片路径(此为选手报名时所提交的选手真人照片,而不是后面可以多次添加的生活照片) /// </summary> public string UserImg { get; set; } /// <summary> /// 选手视频路径(此为选手报名时提交的关于自已本人的介绍视频路径) /// </summary> public string UserVideoUrl { get; set; } /// <summary> /// 是否推荐 /// </summary> public bool IsRecommend { get; set; } /// <summary> /// 选手所报名的活动批次 /// </summary> public int BatchId { get; set; } /// <summary> /// 推荐选手的会员ID /// </summary> public int RecommendUserId { get; set; } /// <summary> /// 选手报名日期 /// </summary> public DateTime Createdatetime { get; set; } }
2. 建立对 AC_ContestantAuditionsUserInfo表的增删改查逻辑。
文件位置如图:

代码:
/// <summary> /// 此处继承了BASEDAO的基础方法,对于数据库的增删改查的基础方法,这里用来写一些满足自已需要创建的个人方法 /// </summary> public class AC_ContestantAuditionsUserInfoDAO:BaseDAO { /// <summary> /// 此处为一示例,表示我要通过用户会员ID来查询这个会员所报名的活动选手列表信息 /// </summary> /// <param name="userId">会员ID</param> /// <returns></returns> public List<AC_ContestantAuditionsUserInfo> GetAcContestantAuditionsUserInfosByUserId(int userId) { //执行语句 string sql = @"SELECT * FROM AC_ContestantAuditionsUserInfo WHERE UserId = @uid)"; return Run(conn => conn.Query<AC_ContestantAuditionsUserInfo>(sql, new { uid = userId }).ToList()); }
/// <summary>
/// 获取相应条件的分页选手信息列表
/// </summary>
/// <param name="totalCount">选手总数</param>
/// <param name="pageNumber">当前页数</param>
/// <param name="pageSize">当页显示多少条数</param>
/// <param name="userId">用户会员Id</param>
/// <param name="batchId">活动批次Id</param>
/// <returns></returns>
public List<AC_ContestantAuditionsUserInfo> GetPage(out int totalCount, int pageNumber = 1, int pageSize = 15, int userId = 0, int batchId = 0)
{
StringBuilder sb = new StringBuilder();
if (userId != 0)
sb.AppendFormat(" AND [UserId] = @userId");
if (batchId != 0)
sb.AppendFormat(" AND [BatchId] = @batchId");
return GetPage<AC_ContestantAuditionsUserInfo>(out totalCount, pageNumber, pageSize, sb.ToString(), new
{
userId = userId,
batchId = batchId
});
} }
3.建立对数据操作层AC_ContestantAuditionsUserInfoDAO的接口方法编写。
文件位置如图:

1 public class ActivityManageService 2 { 3 #region Private Fields 4 /// <summary> 5 /// 这里引用DAO文件 6 /// </summary> 7 private readonly AC_ContestantAuditionsUserInfoDAO _acContestantAuditionsUserDao = new AC_ContestantAuditionsUserInfoDAO(); 8 9 #endregion 10 11 #region AC_ContestantAuditionsUserInfoDAO 12 /// <summary> 13 /// 根据ID获取实体 14 /// </summary> 15 /// <param name="id">实体ID主键</param> 16 /// <returns></returns> 17 public AC_ContestantAuditionsUserInfo GetAcContestantAuditionsUserInfoById(int id) 18 { 19 return _acContestantAuditionsUserDao.GetById<AC_ContestantAuditionsUserInfo>(id); 20 } 21 22 /// <summary> 23 /// 插入新实体AC_ContestantAuditionsUserInfo接口的实现 24 /// </summary> 25 /// <param name="acContestantAuditionsUser">AC_ContestantAuditionsUserInfo实体</param> 26 /// <returns></returns> 27 public int InsertAC_ContestantAuditionsUser(AC_ContestantAuditionsUserInfo acContestantAuditionsUser) 28 { 29 if (acContestantAuditionsUser == null) 30 throw new ArgumentNullException("InsertAC_ContestantAuditionsUser"); 31 32 return _acContestantAuditionsUserDao.Insert<AC_ContestantAuditionsUserInfo>(acContestantAuditionsUser); 33 34 } 35 /// <summary> 36 /// 删除实体AC_ContestantAuditionsUserInfo接口的实现 37 /// </summary> 38 /// <param name="acContestantAuditionsUser">AC_ContestantAuditionsUserInfo实体</param> 39 /// <returns></returns> 40 public int DelAC_ContestantAuditionsUser(AC_ContestantAuditionsUserInfo acContestantAuditionsUser) 41 { 42 if (acContestantAuditionsUser == null) 43 throw new ArgumentNullException("DelAC_ContestantAuditionsUser"); 44 45 return _acContestantAuditionsUserDao.Delete<AC_ContestantAuditionsUserInfo>(acContestantAuditionsUser); 46 47 48 } 49 /// <summary> 50 /// 更新实体AC_ContestantAuditionsUserInfo接口的实现 51 /// </summary> 52 /// <param name="acContestantAuditionsUser">更新的AC_ContestantAuditionsUserInfo实体</param> 53 /// <returns></returns> 54 public int UpdateAC_ContestantAuditionsUser(AC_ContestantAuditionsUserInfo acContestantAuditionsUser) 55 { 56 if (acContestantAuditionsUser == null) 57 throw new ArgumentNullException("UpdateAC_ContestantAuditionsUser"); 58 59 return _acContestantAuditionsUserDao.Update<AC_ContestantAuditionsUserInfo>(acContestantAuditionsUser); 60 } 61 //以上为公共方法接口的实现,以下为个人方法接口的实现 62 63 /// <summary> 64 /// 返回不带分页的该用户会员的报名选手列表信息 65 /// </summary> 66 /// <param name="userId">用户会员Id</param> 67 /// <returns>List<AC_ContestantAuditionsUserInfo></returns> 68 public List<AC_ContestantAuditionsUserInfo> GetAC_ContestantAuditionsUserListByUserId(int userId) 69 { 70 return _acContestantAuditionsUserDao.GetAC_ContestantAuditionsUserInfoListByUserId(userId); 71 } 72 73 /// <summary> 74 /// 返回带分页信息的AC_ContestantAuditionsUserInfo列表信息 75 /// </summary> 76 /// <param name="pageNumber">当前页数</param> 77 /// <param name="pageSize">当前页数最多显示条数</param> 78 /// <param name="userId">用户会员Id</param> 79 /// <param name="batchId">活动批次Id</param> 80 /// <returns></returns> 81 public PageModel<AC_ContestantAuditionsUserInfo> GetAC_ContestantAuditionsUserInfoPage(int pageNumber = 1, 82 int pageSize = 15, int userId = 0, int batchId = 0) 83 { 84 int totalCount; 85 var list = _acContestantAuditionsUserDao.GetPage(out totalCount, pageNumber, pageSize, userId, batchId); 86 return new PageModel<AC_ContestantAuditionsUserInfo>(pageSize, pageNumber, totalCount, list); 87 } 88 89 90 #endregion 91 }
二. 建立视图
建立视图文件
ActivityAdd.cshtml代码如下
@using NiceBiz.Core.Domain @model AC_ContestantAuditionsUserInfo @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> @using (Html.BeginForm("ActivityAdd", "ActivityManage")) { <div> <table> <tr><td colspan="2">活动选手报名提交表单</td></tr> <tr><td>选手姓名:</td><td>@Html.TextBoxFor(x=>x.TrueName)</td></tr> <tr><td>选手联系电话:</td><td>@Html.TextBoxFor(x=>x.UserPhone)</td></tr> <tr><td>选手姓别:</td><td>@Html.RadioButtonFor(x=>x.UserSex,"男") @Html.RadioButtonFor(x=>x.UserSex,"女")</td></tr> <tr><td>选手年龄:</td><td>@Html.TextBoxFor(x=>x.UserAge)</td></tr> <tr><td colspan="2"><input id="Submit1" type="submit" value="提交" /></td></tr> </table> </div> } </body> </html>
ActivityList.cshtml代码如下
@using NiceBiz.Web.Framework @model NiceBiz.Core.PageModel<NiceBiz.Core.Domain.AC_ContestantAuditionsUserInfo> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> @foreach (var acContestantAuditionsUserInfo in Model) { <div> 选手姓名:@acContestantAuditionsUserInfo.TrueName<br/> 选手年龄:@acContestantAuditionsUserInfo.UserAge </div> } @Html.WebPager(Model) </body> </html>
三. 编写控制器代码
在如下位置创建控制器文件ActivityManageController.cs

代码如下
1 public class ActivityManageController : WebController 2 { 3 private readonly ActivityManageService _activityManageService = new ActivityManageService(); 4 public ActionResult ActivityAdd() 5 { 6 return View(); 7 } 8 9 [HttpPost] 10 public ActionResult ActivityAdd(AC_ContestantAuditionsUserInfo acContestantAuditionsUser) 11 { 12 acContestantAuditionsUser.BatchId = 1; 13 acContestantAuditionsUser.Click = 0; 14 acContestantAuditionsUser.Createdatetime=DateTime.Now; 15 acContestantAuditionsUser.IsRecommend = false; 16 acContestantAuditionsUser.UserId = 0; 17 acContestantAuditionsUser.RecommendUserId = 0; 18 acContestantAuditionsUser.UserVideoUrl = ""; 19 acContestantAuditionsUser.UserImg = ""; 20 int ok = _activityManageService.InsertAC_ContestantAuditionsUser(acContestantAuditionsUser); 21 if (ok > 0) 22 { 23 return (ActionResult) RedirectToAction("ActivityList", "ActivityManage"); 24 } 25 return View(acContestantAuditionsUser); 26 } 27 28 public ActionResult ActivityList(int page = 1, int size = 10, int userId = 0, int batchId = 0) 29 { 30 var list = _activityManageService.GetAC_ContestantAuditionsUserInfoPage(page, size, userId, batchId); 31 return View(list); 32 } 33 }
四. 运行效果
运行效果如下图显示

点击提交后显示下图所示

此MVC示例已完成。
------------------------------
浙公网安备 33010602011771号