开发环境:VS2015RC

实例内容: 会员报名以及报名信息的查询和审核管理

教程编写目的: 新入职的程序员快速掌握MVC开发过程

提纲:

一. 建立数据模型(AC_ContestantAuditionsUserInfo.cs)和逻辑代码(AC_ContestantAuditionsUserInfoDAO.cs)。

二. 建立业务层逻辑代码(例如增、删、改、查)。

三.建立业务接口层代码(对于业务层逻辑代码的接口映射)

四. 建立视图。

五. 建立控制器。

六. 运行效果展示。

 

下面开始正文:

一。 数据库建模。

项目结构如下图:

zabbix mvc zabbix mvc 开发_分页

                         图1

 1. 建模(AC_ContestantAuditionsUserInfo.cs)

zabbix mvc zabbix mvc 开发_zabbix mvc_02

代码:

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表的增删改查逻辑。

 文件位置如图:

zabbix mvc zabbix mvc 开发_html_03

代码:

/// <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的接口方法编写。

文件位置如图:

zabbix mvc zabbix mvc 开发_List_04

 

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

zabbix mvc zabbix mvc 开发_分页_05

  代码如下

 

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     }

 

四. 运行效果

 运行效果如下图显示

zabbix mvc zabbix mvc 开发_zabbix mvc_06

 

点击提交后显示下图所示

zabbix mvc zabbix mvc 开发_List_07

此MVC示例已完成。

------------------------------