代码讲解

本篇篇幅过长,所以需要两到三篇博客详细讲述。

BaseController

实例化一个数据库操作的db,其它控制器继承BaseController就可以拥有这个对象

写了一个Data类,用来适配Layui的表格模块,直接返回Json格式的数据就可以直接使用Layui的表格模块了,一次书写,动态加载表格,很棒有木有。而且还可以分页查询啊~

还有就是一个枚举类型的局数,然后一个把局数转字符的方法

using System.Collections.Generic;
using System.Web.Mvc;namespace MVCVolleyball.Controllers
{public class BaseController : Controller{////                       _oo0oo_//                      o8888888o//                      88" . "88//                      (| -_- |)//                      0\  =  /0//                    ___/`---'\___//                  .' \|     |// './/                 / \|||  :  |||// \//                / _||||| -:- |||||- \//               |   | \  -  /// |     |//               | \_|  ''\---/''  |_/ |//               \  .-\__  '-'  ___/-. ///             ___'. .'  /--.--\  `. .'___//          ."" '<  `.___\_<|>_/___.' >' "".//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |//         \  \ `_.   \_ __\ /__ _/   .-` /  ///     =====`-.____`.___ \_____/___.-`___.-'=====//                       `=---='//////     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~////               佛祖保佑         永无BUG//////
        public VolleyballDB db = new VolleyballDB();public static string IningsToString(int? innings){string inningsString = "";switch (innings){case 1:inningsString = Innings.第一局.ToString();break;case 2:inningsString = Innings.第二局.ToString();break;case 3:inningsString = Innings.第三局.ToString();break;case 4:inningsString = Innings.第四局.ToString();break;case 5:inningsString = Innings.第五局.ToString();break;}return inningsString;}}public class Data{public int code  { get { return 0; } set { } }public string msg { get; set; }public long count { get; set; }public List<dynamic> data { get; set; }}public enum Innings{ 第一局=1,第二局=2,第三局=3,第四局=4,第五局=5}
}

View Code

HomeController

首页直接显示大比分,用到了petapoco的分页查询

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace MVCVolleyball.Controllers
 8 {
 9     public class HomeController : BaseController
10     {
11         public ActionResult Index()
12         {
13             return View();
14         }
15
16         #region 首页显示总比分3:0、 3:1之类的
17         /// <summary>
18         /// 首页显示总比分3:0、 3:1之类的
19         /// </summary>
20         /// <param name="page"></param>
21         /// <param name="limit"></param>
22         /// <returns></returns>
23         public ActionResult Scores(long page, long limit)
24         {
25             PetaPoco.Page<CompetitionScore> list = CompetitionScore.Page(page, limit, "select * from CompetitionScore");
26             Data data = new Data();
27             data.count = list.TotalItems;
28             data.data = new List<dynamic>();
29             foreach (var item in list.Items)
30             {
31                 string homeTeamName = Team.FirstOrDefault("where Id=" + item.HomeTeamId + "").TeamName;
32                 string guestTeamName = Team.FirstOrDefault("where Id=" + item.GuestTeamId + "").TeamName;
33                 string theScore = item.HomeTeamScore.ToString() + ":" + item.GuestTeamScore.ToString();
34                 data.data.Add(new { HomeTeanName = homeTeamName, GuestTeamName = guestTeamName, Id = item.Id, TheScore = theScore });
35             }
36             return Json(data, JsonRequestBehavior.AllowGet);
37         }
38         #endregion
39     }
40 }

View Code

HomeController对应的视图

只有一个Index

关于Layui的表格模块可以戳这里:Layui动态表格

 1 @{
 2     ViewBag.Title = "首页";
 3 }
 4 <table id="table" style="margin:0 auto"></table>
 5 <script>
 6     layui.use('table', function () {
 7         var table = layui.table;
 8         table.render({
 9             elem: '#table'
10             , url: '/Home/Scores/'
11             , limits: [10, 20, 30, 40, 50]
12             , limit: 20 //默认采用60
13             , page: true
14             , cols: [[ //标题栏
15
16                 { field: 'HomeTeanName', title: '主队', align: 'center', width: 296 }
17                 , { field: 'TheScore', title: '比分', align: 'center', width: 296 }
18                 , { field: 'GuestTeamName', title: '客队', align: 'center', width: 296 }
19                 , { fixed: 'right', width: 307, align: 'center', title: '操作', toolbar: '#barDemo' }
20             ]]
21         });
22     });
23 </script>
24 <script type="text/html" id="barDemo">
25     <a class="layui-btn  layui-btn-mini" href="/DetailScore/DetailScoreList/{{d.Id}}">查看</a>
26 </script>

View Code

DetailScoreController

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Web;
 6 using System.Web.Mvc;
 7
 8 namespace MVCVolleyball.Controllers
 9 {
10     public class DetailScoreController : BaseController
11     {
12         #region 获取详细比分
13         /// <summary>
14         /// 获取详细比分
15         /// </summary>
16         /// <param name="Id"></param>
17         /// <returns></returns>
18         [HttpGet]
19         public ActionResult DetailScoreList(int Id)
20         {
21             List<TotalScore> list = TotalScore.Fetch("where CompetitionId=@0", Id);
22             ViewBag.Id = Id;
23             ViewBag.HomeTeamName = Team.FirstOrDefault("where Id=" + list[0].HomeTeamId + "").TeamName;
24             ViewBag.GuestTeamName = Team.FirstOrDefault("where Id=" + list[0].GuestTeamId + "").TeamName;
25             return View(list);
26         }
27         [HttpPost]
28         public ActionResult DetailScoreList(int Id, long page, long limit, int inningsNum = 1)
29         {
30             PetaPoco.Page<DetailScore> list = DetailScore.Page(page, limit, "where CompetitionId=@0  and Innings=@1", Id, inningsNum);
31             Data data = new Data();
32             data.count = list.TotalItems;
33             data.data = new List<dynamic>();
34             foreach (var item in list.Items)
35             {
36                 string homeTeamName = Team.FirstOrDefault("where Id=" + item.HomeTeamId + "").TeamName;
37                 string guestTeamName = Team.FirstOrDefault("where Id=" + item.GuestTeamId + "").TeamName;
38                 string homeTeamMemberName = "";
39                 string guestTeamMemberName = "";
40                 if (item.HomeTeamMemberId > 0)
41                 {
42                     homeTeamMemberName = TeamMember.FirstOrDefault("where Id= " + item.HomeTeamMemberId + "").MembersName;
43                 }
44                 if (item.GuestTeamMemberId > 0)
45                 {
46                     guestTeamMemberName = TeamMember.FirstOrDefault("where Id= " + item.GuestTeamMemberId + "").MembersName;
47                 }
48
49                 string innings = IningsToString(item.Innings);
50                 data.data.Add(new
51                 {
52                     Id = item.CompetitionId,
53                     HomeTeamName = homeTeamName,
54                     GuestTeamName = guestTeamName,
55                     HomeTeamMemberName = homeTeamMemberName,
56                     GuestTeamMemberName = guestTeamMemberName,
57                     HomeTeamDetail = item.HomeTeamDetail,
58                     GuestTeamDetail = item.GuestTeamDetail,
59                     GuestTeamDetailScore = item.GuestTeamDetailScore,
60                     HomeTeamDetailScore = item.HomeTeamDetailScore
61                 });
62             }
63             return Json(data);
64         }
65         #endregion
66     }
67 }

View Code

DetailScoreController的视图

只有一个DetailScoreList

  1 @model List<TotalScore>
  2 @{
  3     ViewBag.Title = "详细比分列表";
  4 }
  5
  6 <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
  7     <ul class="layui-tab-title">
  8         @{
  9             foreach (var item in Model)
 10             {
 11                 if (item.Innings == 1)
 12                 {
 13                 @Html.Raw("<li lay-id='1'>第一局</li>");
 14                 }
 15                 else if (item.Innings == 2)
 16                 {
 17                 @Html.Raw("<li lay-id='2'>第二局</li>");
 18                 }
 19                 else if (item.Innings == 3)
 20                 {
 21                 @Html.Raw("<li lay-id='3'>第三局</li>");
 22                 }
 23                 else if (item.Innings == 4)
 24                 {
 25                 @Html.Raw("<li lay-id='4'>第四局</li>");
 26                 }
 27                 else if (item.Innings == 5)
 28                 {
 29                 @Html.Raw("<li lay-id='5'>第五局</li>");
 30                 }
 31             }
 32
 33         }
 34     </ul>
 35     <div class="layui-tab-content">
 36
 37         @{
 38             string homeTeam = ViewBag.HomeTeamName;
 39             string guestTeam = ViewBag.GuestTeamName;
 40             string result = "";
 41             foreach (var item in Model)
 42             {
 43                 if (item.Innings == 1)
 44                 {
 45                     result = homeTeam + item.HomeTeamScore + ":" + item.GuestTeamScore + guestTeam;
 46                     @Html.Raw("<div class='layui-tab-item layui-show '> <p style='text - align:center;margin-left:40%;color:#393D49;font-size:24px;'>" + result + "</p></div>");
 47                 }
 48                 else if (item.Innings == 2)
 49                 {
 50
 51                     result = homeTeam + item.HomeTeamScore + ":" + item.GuestTeamScore + guestTeam;
 52                     @Html.Raw(" <div class='layui-tab-item'><p style='text - align:center;margin-left:40%;color:#393D49;font-size:24px;'>" + result + "</p></div>");
 53                 }
 54                 else if (item.Innings == 3)
 55                 {
 56
 57                     result = homeTeam + item.HomeTeamScore + ":" + item.GuestTeamScore + guestTeam;
 58                     @Html.Raw("<div class='layui-tab-item'><p style='text - align:center;margin-left:40%;color:#393D49;font-size:24px;'>" + result + "</p></div>");
 59                 }
 60                 else if (item.Innings == 4)
 61                 {
 62                     result = ViewBag.HomeTeamName + item.HomeTeamScore + ":" + item.GuestTeamScore + ViewBag.GuestTeamName;
 63                     @Html.Raw("<div class='layui-tab-item'><p style='text - align:center;margin-left:40%;color:#393D49;font-size:24px;'>" + result + "</p></div>");
 64                 }
 65                 else if (item.Innings == 5)
 66                 {
 67                     result = homeTeam + item.HomeTeamScore + ":" + item.GuestTeamScore + guestTeam;
 68                     @Html.Raw("<div class='layui-tab-item'><p style='text - align:center;margin-left:40%;color:#393D49;font-size:24px;'>" + result + "</p></div>");
 69                 }
 70             }
 71
 72         }
 73         @if (Model.Count > 0)
 74         {
 75         <table id="score" style="margin:0 auto;"></table>
 76         }
 77     </div>
 78 </div>
 79 <script>
 80     layui.use(['element', 'layer','table'], function () {
 81         var element = layui.element
 82             , layer = layui.layer, table = layui.table;
 83         table.render({
 84             elem: '#score'
 85             , url: '/DetailScore/DetailScoreList/'
 86             , where: { Id: '@ViewBag.Id' }
 87             , method: 'post'
 88             , limits: [10, 20, 30, 40, 50]
 89             , limit: 30 //默认采用60
 90             , page: true
 91             , cols: [[ //标题栏
 92
 93                  { field: 'HomeTeamName', title: '主队', align: 'center', width: 145 }
 94                 , { field: 'HomeTeamMemberName', title: '主队得分选手', align: 'center', width: 145 }
 95                 , { field: 'GuestTeamDetail', title: '主队得分详情', align: 'center', width: 145 }
 96                 , { field: 'HomeTeamDetailScore', title: '主队得分', align: 'center', width: 145 }
 97                 , { field: 'GuestTeamDetailScore', title: '客队得分', align: 'center', width: 145 }
 98                 , { field: 'GuestTeamDetail', title: '客队得分详情', align: 'center', width: 145 }
 99                 , { field: 'GuestTeamMemberName', title: '客队得分队员', align: 'center', width: 145 }
100                 , { field: 'GuestTeamName', title: '客队', align: 'center', width: 145 }
101                 //rowspan即纵向跨越的单元格数
102             ]]
103         });
104         element.on('tab(docDemoTabBrief)', function (data) {
105             //layer.msg('切到到了' + data.index + ':' + this.innerHTML);
106         table.render({
107             elem: '#score'
108             , url: '/DetailScore/DetailScoreList/'
109             , where: { Id: '@ViewBag.Id', inningsNum: data.index + 1 }
110                 , method: 'post'
111                 , limits: [10, 20, 30, 40, 50]
112                 , limit: 30 //默认采用60
113                 , page: true
114                 , cols: [[ //标题栏
115
116                      { field: 'HomeTeamName', title: '主队', align: 'center', width: 145 }
117                     , { field: 'HomeTeamMemberName', title: '主队得分选手', align: 'center', width: 145 }
118                     , { field: 'GuestTeamDetail', title: '主队得分详情', align: 'center', width: 145 }
119                     , { field: 'HomeTeamDetailScore', title: '主队得分', align: 'center', width: 145 }
120                     , { field: 'GuestTeamDetailScore', title: '客队得分', align: 'center', width: 145 }
121                     , { field: 'GuestTeamDetail', title: '客队得分详情', align: 'center', width: 145 }
122                     , { field: 'GuestTeamMemberName', title: '客队得分队员', align: 'center', width: 145 }
123                     , { field: 'GuestTeamName', title: '客队', align: 'center', width: 145 }
124
125                 ]]
126             });
127
128         });
129     });
130
131
132
133 </script>   

View Code

转载于:https://www.cnblogs.com/colorful-Ji/p/7499897.html

排球计分程序重构(五上篇)相关推荐

  1. 排球计分程序重构(五中篇)

    代码讲解2 TeamsController 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 usi ...

  2. 排球计分程序重构(四)

    View的设计 _Layout视图 其他视图在代码讲解中详细贴出 1 <!DOCTYPE html> 2 <html style="width:100%;height:10 ...

  3. 排球计分程序(三)—— 模型类的设计与实现

    通过EF框架设计模型生成数据图和表: 1)添加运动员模型类: namespace 排球计分程序.Models {     public class Ball     {         public ...

  4. 排球计分程序功能说明书

    目标: 帮助排球裁判计分,以减轻裁判的负担.并记录比赛计分的过程.目标不包括犯规的判定.详细的了解了比赛计分规则之后及用户需要所形成的汇总.通过这个文档能够明确以后项目的进度与规划,组织软件的开发与测 ...

  5. 排球计分程序(八)——验证编辑方法(Edit method)和编辑视图(Edit view)

    修改代码,使得发布ReleaseDate看上去更好.打开Balls \ Ball.cs文件 using System; using System.ComponentModel.DataAnnotati ...

  6. 排球计分规则3.17

    用户故事: 作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录) 运行截图: 下附代码: -------- ...

  7. 排球比赛计分程序功能说明书

    ---恢复内容开始--- 编写目的 让裁判和排球爱好者,赛事组织便于记录分数和查询赛事记录. 目标不包括犯规判定. 项目用户 赛事组织和裁判以及广大排球爱好者. 项目典型场景 2016年里约奥运会女排 ...

  8. 排球比赛计分程序的典型用户和场景

    排球比赛计分程序的典型用户和场景 1.典型用户 姓名: 小王 性别和年龄: 男,25岁 职业: 黑客 收入: 没有固定收入 知识层次和能力: 大专毕业,能侵入没有太多防护的网站和软件 动机.目的.困难 ...

  9. 排球计分系统java_排球计分系统|网世技术排球计分系统下载v1.0官方版 - 欧普软件下载...

    排球计分系统是一款免费的排球比赛计分软件,采用五局三胜制,可以准确的记录双方的得分情况,包括犯规.球员信息.全队得分等信息,支持多种设备输出,是日常排球比赛计分的好工具,有需要的朋友可以来本站下载! ...

最新文章

  1. 《中国人工智能学会通讯》——6.27 超越模式识别
  2. clion pycharm 报错 bash: line 0: cd: /xxx: No such file or directory
  3. Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
  4. iphone 软键盘
  5. Hessian序列化复杂对象
  6. 【IT笔试面试题整理】有序数组生成最小高度二叉树
  7. 这篇 Linux 总结得很棒啊!
  8. Anaconda是什么?Anconda下载安装教程 - Python零基础入门教程
  9. 力士乐电源模块故障代码_奥的斯电梯OVF402,OVF404,OVF406驱动器故障代码
  10. postgresql安装hypopg
  11. iOS gmssl 编译
  12. 人力资源管理系统概要设计说明书
  13. Go语言 gorutine和channel协同工作经典应用案例 (Golang经典编程案例)
  14. java解压缩zip、rar
  15. 一文搞定贷款利息计算
  16. 如何实现小投资大回报?
  17. 在Linux内核接收路径查找top 1的IP地址
  18. 2021年白露是什么时候?白露的习俗有哪些?
  19. 计算机桌面右下角的图标不见了,图标,详细教您怎么解决右下角图标不见了的问题...
  20. GeoServer发布影像金字塔并leaflet加载

热门文章

  1. Spring 基础概念——DI、IOC(一)
  2. 通过u盘装window7
  3. 构建直接路由模式(DR)的LVS
  4. Asp.Net实例:C# 绘制统计图(二) ——折线统计图的绘制
  5. Linux下如何用pxe安装虚拟机?
  6. 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
  7. 安装vue-cli脚手架
  8. 软件架构设计——软件架构风格
  9. Blockchain.com,Eden Block,DACM等知名公司加入Pocket生态
  10. 加密托管服务商Unchained Capital完成550万美元融资,NYDIG领投