排球计分程序重构(五上篇)
代码讲解
本篇篇幅过长,所以需要两到三篇博客详细讲述。
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
排球计分程序重构(五上篇)相关推荐
- 排球计分程序重构(五中篇)
代码讲解2 TeamsController 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 usi ...
- 排球计分程序重构(四)
View的设计 _Layout视图 其他视图在代码讲解中详细贴出 1 <!DOCTYPE html> 2 <html style="width:100%;height:10 ...
- 排球计分程序(三)—— 模型类的设计与实现
通过EF框架设计模型生成数据图和表: 1)添加运动员模型类: namespace 排球计分程序.Models { public class Ball { public ...
- 排球计分程序功能说明书
目标: 帮助排球裁判计分,以减轻裁判的负担.并记录比赛计分的过程.目标不包括犯规的判定.详细的了解了比赛计分规则之后及用户需要所形成的汇总.通过这个文档能够明确以后项目的进度与规划,组织软件的开发与测 ...
- 排球计分程序(八)——验证编辑方法(Edit method)和编辑视图(Edit view)
修改代码,使得发布ReleaseDate看上去更好.打开Balls \ Ball.cs文件 using System; using System.ComponentModel.DataAnnotati ...
- 排球计分规则3.17
用户故事: 作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录) 运行截图: 下附代码: -------- ...
- 排球比赛计分程序功能说明书
---恢复内容开始--- 编写目的 让裁判和排球爱好者,赛事组织便于记录分数和查询赛事记录. 目标不包括犯规判定. 项目用户 赛事组织和裁判以及广大排球爱好者. 项目典型场景 2016年里约奥运会女排 ...
- 排球比赛计分程序的典型用户和场景
排球比赛计分程序的典型用户和场景 1.典型用户 姓名: 小王 性别和年龄: 男,25岁 职业: 黑客 收入: 没有固定收入 知识层次和能力: 大专毕业,能侵入没有太多防护的网站和软件 动机.目的.困难 ...
- 排球计分系统java_排球计分系统|网世技术排球计分系统下载v1.0官方版 - 欧普软件下载...
排球计分系统是一款免费的排球比赛计分软件,采用五局三胜制,可以准确的记录双方的得分情况,包括犯规.球员信息.全队得分等信息,支持多种设备输出,是日常排球比赛计分的好工具,有需要的朋友可以来本站下载! ...
最新文章
- 《中国人工智能学会通讯》——6.27 超越模式识别
- clion pycharm 报错 bash: line 0: cd: /xxx: No such file or directory
- Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
- iphone 软键盘
- Hessian序列化复杂对象
- 【IT笔试面试题整理】有序数组生成最小高度二叉树
- 这篇 Linux 总结得很棒啊!
- Anaconda是什么?Anconda下载安装教程 - Python零基础入门教程
- 力士乐电源模块故障代码_奥的斯电梯OVF402,OVF404,OVF406驱动器故障代码
- postgresql安装hypopg
- iOS gmssl 编译
- 人力资源管理系统概要设计说明书
- Go语言 gorutine和channel协同工作经典应用案例 (Golang经典编程案例)
- java解压缩zip、rar
- 一文搞定贷款利息计算
- 如何实现小投资大回报?
- 在Linux内核接收路径查找top 1的IP地址
- 2021年白露是什么时候?白露的习俗有哪些?
- 计算机桌面右下角的图标不见了,图标,详细教您怎么解决右下角图标不见了的问题...
- GeoServer发布影像金字塔并leaflet加载
热门文章
- Spring 基础概念——DI、IOC(一)
- 通过u盘装window7
- 构建直接路由模式(DR)的LVS
- Asp.Net实例:C# 绘制统计图(二) ——折线统计图的绘制
- Linux下如何用pxe安装虚拟机?
- 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
- 安装vue-cli脚手架
- 软件架构设计——软件架构风格
- Blockchain.com,Eden Block,DACM等知名公司加入Pocket生态
- 加密托管服务商Unchained Capital完成550万美元融资,NYDIG领投