爱上MVC系列~前端验证与后端数据有效性验证
来源:互联网 发布:学生网络安全隐患 编辑:程序博客网 时间:2024/05/12 01:09
有一句话,在10年前就是真理,到现在也一直都是,“前端验证可以没有,但后端验证必须要有”,这句话相信大家都没有意见吧,前端验证一般指通过JS方式实现的,友好的,个性的验证方式,而后端验证是指从表单提交过来,要进行入库之前的,数据有效性的验证,它不需要有美丽的外表,它需要有的仅仅是“有效”!
下面我将到MVC环境里的前端验证和后端验证作一个详细的说明,一个使用上的说明。
前端验证(KnockoutJs实现)
//创建订单使用knockoutJs var CreateOrder = function () { var self = this; self.productid = ko.observable().extend({ required: true }); self.productname = ko.observable().extend({ required: true }); self.username = ko.observable().extend({ required: true }); self.price = ko.observable().extend({ required: true, min: { params: 1, message: "价格要是大于(0)的整数!" } }); self.count = ko.observable().extend({ required: true, min: { params: 1, message: "您最少也要买一个吧!" }, max: { params: 100, message: "最大一次只能买(100)个!" } }); self.Do = function () {//ko方法名需要是大写的 self.errors = ko.validation.group(self); if (self.isValid()) { $.ajax({ url: "/order/doOrder", type: "POST", data: { productid: self.productid(), productname: self.productname(), price: self.price(), count: self.count(), username: self.username() }, success: function (data) { if (data.code == 1) { location.href = location.href; } else alert(data.code); } }) } else { self.errors.showAllMessages(); } } } ko.applyBindings(new CreateOrder());
后端验证(数据实体有效性验证和ViewModel业务规则验证)
在这里多说两句,数据实体有效性验证是指和数据表相关的验证规则,如你的UserName字段长度为128字符,那么,你的实体验证的长度就是128,而ViewModel业务规则验证是指针对具体业务设计的视图模型,如用户注册模块,在这个模块里,你的UserName被产品经理规则为50个字符,那么,你的这个业务规则验证的长度就是50,当然,你的其它业务可能也用到了UserName字段,而它的业务规则当然可以不同,这就是有效性和业务规则。
下面代码是一个返回Json结果的Post请求方法,代码如下
public JsonResult DoOrder(int productid, string username, string productname, decimal price, int count) { var entity = new Entity.Order_Info { TotalPrice = price * count, UserId = userid, UserName = username, AddDate = DateTime.Now, Info = "用户下单", Order_Detail = new List<Order_Detail> { new Order_Detail { Count = count, ProductId = productid, ProductName = productname, SalePrice = price } } }; if (productid <= 0) { ModelState.AddModelError("ProductId", "商品ID不合法..."); } #region 在action里拼接ModelState错误消息 var errors = new StringBuilder(); foreach (string key in ViewData.ModelState.Keys) { ModelState modelState = ViewData.ModelState[key]; foreach (ModelError error in modelState.Errors) { errors.Append(error.ErrorMessage + ","); } } #endregion if (entity.IsValid && ModelState.IsValid) orderService.DoOrder(entity); else return Json(new { code = entity.GetRuleViolationMessages() + errors }); return Json(new { code = 1 }); }
0 0
- 爱上MVC系列~前端验证与后端数据有效性验证
- PHP前端后端表单数据验证(一)
- JavaScript 数据有效性验证
- Scrapy爬虫入门系列3 将抓取到的数据存入数据库与验证数据有效性
- MVC后端验证码
- JavaScript 数据有效性验证(转)
- pb 的数据有效性验证
- Excel2013的数据有效性验证
- springmvc:Validator数据有效性验证
- 前端和后端控件验证
- MVC前端与后端校验
- 注册表单:服务器端的数据有效性验证
- 基于XML Schema的数据有效性验证
- JS验证数据有效性的具体方法
- Asp 使用正则 验证数据的有效性
- 前端和后端的输入合法性验证
- SSM(4)前端+后端传输格式验证
- 关于在前端验证后端生成的验证码
- 喜爱的淘宝店-不断添加更新
- 安装ryu的依赖包lxml时出现错误
- 镶嵌数据集工具小结(八)色彩平衡与接缝线 Ⅱ
- Java读取文件内容的几种方式集合
- UVA232
- 爱上MVC系列~前端验证与后端数据有效性验证
- 二进制转换
- 内部类(待补充)
- dwz table增加总计、小计
- Invoke和BeginInvoke的使用(转载)
- 解决VB6程序打开时不能加载控件的问题
- PHP学习笔记(一)
- Control的Invoke和BeginInvoke
- 基于XMPP协议的Android IM研究,主要讲监听