MVC增删查改

​                                                 

注意事项

视图中接收的返回值和控制器封装的返回值要一致

控制器封装的返回值:ViewBag.airports= airports;

视图:List<S_Airport> airports =ViewBag.airports;(变量名可以不一样)

2、若修改了数据库,要重新引用数据模型

3、连表查询 join tab被连接表 in model.表名on 连接表.外键/主键/外键 equals tab被连接表.主键/外键/外键

新增

主要分为:  数据验证、新增数据保存到数据库 两部分

(1)其中需要验证是否有输入数据,如果是必须填写的,就弹出提示框提醒完成填写,不然无法继续下一步操作。

例:

//判断名字是否填写

if (Name==undefined||Name=="") {

     alert("请填写姓名!");

     return;

}

(2)验证输入的格式是否符合规范,比如,规定输入数字,但某些用户可能会输入中文,英文,特殊字符等来捣乱,而需要进行限制的特别多,就像身份证号不能输入字符,中文等,还有电话号码,所以需要限制其只能输入规定的格式,我们一般使用正则表达式来约束。当然,有些无需使用正则表达式,例如:身份证号有专属的约束方式

举个例子:邮箱

"^([a-zA-Z]|[0-9])(\\w|\\-)+@[a-zA-Z0-9]+\\.([a-zA-Z]{2,4})$"

 

(3)验证新增的是否与数据库的重复,若是重复,就不能保存到数据库,否则有可能会发生冲突,例如:新增用户,当没有限制新增重复的用户到
数据库时,使用重复的用户账户就会产生冲突,无法进行登陆

当然,只是有些不能重复添加,不代表所有的都不能重复,就像名字,不是谁的名字都是唯一的

还有像新增旅客的,需要计算座位数是否足够

修改

和新增基本一样,但修改时在原有的基础上进行修改,需要进行数据回填,对比数据库中的是否不相同,再进行修改。当然如果全部相同,可以不修改进数据库,也可以不修改进数据库直接弹出提示框“无需修改”。

修改时,基本都使用事务,避免修改失败时,传入数据库一半是修改后的,一半是失败导致修改不成功的情况。

using (TransactionScope scope = newTransactionScope())

{

    ……

……

myModel.Entry(user).State= System.Data.Entity.EntityState.Modified;

   if (myModel.SaveChanges() > 0)

   {

       //--------++++事务提交+++

       scope.Complete();

 

       msg.State = true;

       msg.Text = "修改成功";

   }

   else

   {

       msg.Text = "修改失败";

   }

}

也就是说,未到达scope.Complete()之前,修改后的数据,在数据库中是找不到的。没有到scope.Complete(),或者是写了using (TransactionScope scope = newTransactionScope()),但没有写scope.Complete(),就算运行没有发生错误,提示修改成功,但数据库是不会保存修改数据的。也就是事务没有提交,数据库就会撤回保存修改

删除

先查询是否正在使用,再查询出所有需要删除的数据,进行删除

因删除是一瞬间的事,所以需要提醒一下,避免误删

例:layer.confirm("您确认要删除该用户吗?", { icon: 3, title: '提示' }

需要注意的是:

如果像飞机订票系统中的删除人数,需要释放座位数,退还票钱。

因为某特殊原因需要删除航段,可以给客户进行换航班的处理,若票价有差异,也需退回票钱。

查询

查询是带有目的性的,所以查询必须有一个及以上的查询条件:日期,姓名,身份证等等,因为这个项目的一些模块的查询主要涉及时间,所以在这个项目里一般使用日期的比较多,为了方便及少写代码基本都是引用插件

//初始化多个日历插件 layui

$(". myLayDate").each(function () {

     layDate.render({

     elem: this,

     type: 'date',

     btns: ['clear', 'confirm'],

     trigger: 'click'

   });

});

查询:获取查询条件,与数据库进行比较,将符合查询条件的数据筛选出来,进行排序,返回页面。

 

 

小结

1.      加载层一般在网络请求前打开 ,在网络请求的回调的最前面关闭

2.      "@Url.Content("~/Main/UserLogin")"中   ~ :wed应用的根  

/ :网站的根,转到端口(第一个“/”)

         可用于项目发布后的定位

3.      一般为了避免回退到登录页面,会使用replace

4.  当浏览器第一次请求服务器时,服务器会建一个“空间”session,将请求的会话存到session中,服务器再返回响应response(携带sessionID)给浏览器,浏览器也会创建一个“空间”cookie,将response储存到cookie中,而之后的第二次及以后的请求浏览器都会将对应的sessionID携带上,再传到服务器。【相当于相互储存了对方的信息】,所以浏览器上使用过账号和密码若是点击记住,就会储存到cookie中,但cookie的最长保存时间为7天,就是说超过7天没有登录,浏览器就会自动忘记记住的账号和密码。

5.      Lambda表达式 :  变量=>使用这个变量的语句

                  

可简写为:

 

6.      data()

data-* 属性用于存储页面或应用程序的私有自定义数据。

data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。

data-* 属性包括两部分:

属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符

属性值可以是任意字符串

7.      当需要使用到某个页面的操作时,可以设置一个操作标志,就像PNR复制,代理人票证查询的自定义列,PNR的添加航段,部分出票等。为避免发生冲突,在打开被使用的页面前,会清除这些标志,而操作标志基本上都是放在sessionStorage(会话储存)中。

8.      HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储)。

(1)、localStorage:localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。而localStorage除非主动删除数据,否则数据永远不会消失。

(2)、sessionStorage的生命周期是在仅在当前会话下有效。sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。

但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。

(3)、localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理

(4)、localStorage和sessionStorage的存储数据大小一般都是:5MB

(5)、localStorage和sessionStorage都保存在客户端(浏览器),不与服务器进行交互通信。

 

.setItem(key,value);   用于添加和修改保存的数据 key不存在时为添加,key存在时为修改

.getItem(key);      获取指定key的value

.removeItem(key);    移除指定key的数据

9.      substr()

该方法可在字符串中抽取,从start下标开始的指定数目的字符.

可用于日期的转换:由  /Date(1596038400000)/  转成:

 

输出:

 

substr(6,13)即 从第6个字符开始获取后面的13个字符

 

10.  layui-form标识一个表单元素块为layui的表单,

注意:一旦使用layui-form,如果不加载form模块,select、checkbox、radio等将无法显示,并且无法使用form相关功能

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值