项目总结(FJDPXT:MVC)

开发工具与关键技术:Visual Studio 2015
作者: 杜永鹏
发布时间: 2020年8月9日

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
Controller处理用户的输入反回给视图 控制: 数据的输入.保存. 视图的跳转
视图更多的是通过控制器进行交互 视图很少会经过数据库
它们三者之间的关系是: 视图把数据传给控制器再通过控制器传到数据库去查询再返回给控制器,控制器在返回诶视图; 视图尽量不要跟数据库有关系

Session 和 cookie 两者要配合使用: 从浏览器中传送到服务器中,会创建一个叫作session的区域来存放数据,每一个session创建后都有一个sessionID,用来存放数据,第一次从服务器传回来的sessionID保存在浏览器的cookie中
获取浏览器携带cookie:HTTPCookie cookie=(拿浏览器传过里的cookie这里用一个方法叫Stsytem.Web 调用系统的Wed HTTP请求的上下文.Current当前这个请求;cookie携带在这个请求里面的)
Layui表格加载(table):
Layui.use: 加载多个可以使用数组[ ‘layer’ , ’table’] 在外部申请一个全局变量来接收’数 据’接下来初始化模块(layui)
例:$(function () {
//加载layui的模块
layui.use([‘layer’, ‘table’], function () {
layer = layui.layer;
layuiTable = layui.table;

            //执行渲染
            layuiTable.render({
                elem: '#tabAirport',//指定原始表格元素选择器(推荐id选择器)
                //height: 315,//容器高度 ,如果不指定就是根据数据的多少自适应
                url:"@Url.Content("~/SystemMaintenance/TCCMaintain/SelectAirport")",
                cols: [[ //标题栏
                    {type:'numbers',title:'序号'},//序号列
                    //field 和数据字段对应, title显示的表头,width:指定列宽度,不知道就是自适应宽度
                    { field: 'airportID', title: 'airportID', hide: true },//hide:true 隐藏列
                    { field: 'pinyinName', title: '城市拼音名' },


//自定义列
{ title: ‘修改’, templet: customUpdateCol, align: ‘center’ },
{ title: ‘删除’, templet: customDeleteCol, align: ‘center’ },
]],
page: true,//开启分页
limit:5,//table初始化时每页显示的条数 (默认10)
limits: [5,10,15,20,25,30], //每页条数的选择项
});
});
});

try的用法:
Try & catch就是把它们中间的代码监控起来当他出现异常转到catch里面处理异常
例如: try
{
int userID = Convert.ToInt32(Session[“userID”].ToString());

            return View();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);

            //重定向
            //重定向到登录页面
            return Redirect(Url.Content("~/Main/Login"));
        }

多表连接:
tabUser 这张表连接 tabUserGroup这张表 on 就是通过
List listData = (from tabUser in myModel.S_User
tabUserGroupID equals 就是等于 tabUserGroup.userGroupID

join tabUserGroup in myModel.S_UserGroup
通过连张表的ID进行连接 ‘join 是关键’
on tabUser.tabUserGroupID equals tabUserGroup.userGroupID
PK:主键 Fk:外键 连表查询 join tab被连接表 in model.表名 on 连接表.外键/主键/外键
equals tab被连接表。主键/外键/外键
连接都是放在最前面的不能放在后面 位置不能调 在UserVo中定义的是decimal类型 映射过来的是decimal?类型 转成decimal类型直接加一个.Value
accountBalance = tabVirtualAccount.accountBalance.Value

多表连接:linq表查询的方法
(from 自定义的表名 in Model对象.查询的表
【where 自定义的表名.字段1 关系运算符 值 【&& 自定义的表名.字段2 关系运算符 值】】
【orderby 自定义的表名.字段】
【select 自定义的表名】
【select new {[属性名1= ]自定义的表名.字段1,
[属性名2= ]自定义的表名.字段2,
[属性名3= ]自定义的表名.字段3,

}】
【select 类名{ 类的属性1=自定义的表名.字段1,
类的属性2=自定义的表名.字段2,

}】
).Single();//查询单条数据,当没有数据或者有多条数据时会触发异常
.SingleOrDefault();//查询单条数据,当没有数据返回默认值(对象的默认值为 null);当有多条数据时触发异常
.ToList();//查询多条数据并转为List
.Count();//查询有多少条数据

内连接和外连接:
例: A 1 2 3 5 7 9
B 1 3 5 8 9
内连接:两边都存都有相同的数据在才会存在,取AB两边都有的数据(1 3 5 9)
左连接:以A为标, 右连接则以B为标准
外连接;取两边的全部(1 2 3 5 7 8 9)

传递数组:
int[] sessionFlightCabinIDs = Session[“flightCabinIDs”] as int[];
as 是 c#提供的一个数据转换关键字,如果可以转换,就返回转后的值,如果不能转换就返回 null,不会出现异常
as 更适合用于引用数据类型,不能用于基本数据类型,除string s=Session[“”]as string;一 般都使用在一些对象.as使用时需要搭配引用数据类型、

存放Model的实例:
private static FJDPXTEntities myModel;//属于是类的一个值放在类中,由于这个类加载之后是不会自动销毁的,如果不属于这块的功能加载之后会比较浪费资源,虽然定义了myModel但是并没有去初始化它,没有去申请内存,指向的是null
Modeld的实例:
public static string reatePNR()
{
//一种懒加载 在需要使用的时候才去加载
if (myModel ==null)
{
//要使用才去加载它
myModel = new FJDPXTEntities();
}
string strPnrNo = “”;
bool isExist = false;//存放生成的PNR是否存在数据库
do
{
//随机生成一个6位的PNR编号
strPnrNo = CreatePNR6();
//判断随机生成的PNR编号是否存在
int count = myModel.B_PNR.Count(o => o.PNRNo.Trim() == strPnrNo);
isExist = count > 0;
} while (isExist);

        return strPnrNo;
    }

事务:
using (TransactionScope scope = new TransactionScope())
要通过事务去保障数据涉及多表数据进行保存时,要么是没有进行数据交接的状态,要么数据交接完的状态

$!$ 用了事务:一定要提交事务!! scope.Complete();
//开启事务用using /在类的顶部使用using代表引用/ 开启事务用using代表自动释放对象或叫资源,
相当于工具人用完就可以走,不是全部的类都可以自动释放必须有‘IDisposable’这个接口的类才能自动释放 C#很多内部类都可以
using (TransactionScope scope= new TransactionScope())
//!!!!!!提交事务
     scope.Complete();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值