技术:c# .net  采用mvc框架,实现model的数据验证。

刚开始觉得数据验证很方便,可以判断非空、数据正确性,但是后来发现很多需要数据库的判定还是需要post请求做,但是就想mvc的数据验证是否可以做到同样的功能,示例如下。


一:Model 层调用Post 方法数据验证

     

using System.Web.Mvc;
//我用的是4.0000
     /// <summary>
/// 手机号
/// </summary>
[Required(ErrorMessage = "手机号不能为空!")]
[RegularExpression("[0-9]{11,11}", ErrorMessage = "手机号格式错误!")]
[System.Web.Mvc.Remote("CheckGuestMobile", "CRM", "CommercialTenant", HttpMethod = "post", ErrorMessage = "手机号已存在")]
public string Mobile { get; set; }
    /// <summary>
/// 判断客户手机号是否重复
/// </summary>
/// <param name="mobile"></param>
/// <returns>True 已有此手机号</returns>
[HttpPost]
public ActionResult CheckGuestMobile(string mobile)
{
if (this.CRMService.CheckGuestMobile(mobile, this.LoginInfo.CommercialTenantID))
{
return Content("false");
}
else
{
return Content("true");
}
}

  ps:这个只是前段验证,但是关键数据要在后端再做验证

  这个post方法为false时不需要返还bool 可以直接返还ErrorMessage

 public JsonResult CheckUserName(string userName)
{
if (IsUniqueName(userName) && IsForbiddenName(userName))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else if (!IsUniqueName(userName))
{
return Json("用户名不唯一!", JsonRequestBehavior.AllowGet);
}
else
{
return Json("用户名不包含违禁词!", JsonRequestBehavior.AllowGet);
}
}

二:基本方法

  1、Required-必填选项,当提交的表单缺少该值就引发验证错误。

        /// <summary>
/// 姓名
/// </summary>
[DisplayName("姓名")]
[Required(ErrorMessage = "姓名不能为空!")]
public string Name { get; set; }

  2、StringLength

[StringLength()]  //最大长度不超过20个字符 
public string name { get; set; }
[StringLength(20,MinimumLength=3)]  //最大长度不超过20个字符,最短不能低于3个字符
public string password { get; set; }

  3、RegularExpression-正则表达式能够匹配的字符串,如果不能匹配,则报一个验证错误

[RegularExpression(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", ErrorMessage = "请输入正确的电子邮箱地址!")]
public string email{ get; set; }

  4、Range-用来指定数值类型值的最小值和最大值。

[Range(35,44)]    //整型,最小35,最大44
  [Range(typeof(decimal),"0.00","49.99")] //decimal类型

  5、Remote-允许利用服务器端的回调函数执行客户端的验证逻辑。说白了就是支持AJAX验证。

  细则如上所示

  6、Compare-用于确保模板对象的两个对象拥有相同的值。

[Compare("要对比的属性名")]
[Compare("Money")]
public decimal price { get; set; }

  以上特性需要 using System.ComponentModel.DataAnnotations;

  同时需要注意Web.config里面的这两个选项是否设置为了true;

    <add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

后面如果有好的方法再说。

MVC 多种 数据验证 post的更多相关文章

  1. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

  2. 期货大赛项目|四,MVC的数据验证

    上图先看下效果 样式先不说,先了解下数据验证是怎么实现的 一 必须是强类型的视图 二 这些显示提示的话语,都在强类型的实体中 三 必须使用Html.BeginForm或者Html.AjaxBeginF ...

  3. MVC中数据验证

    http://www.studyofnet.com/news/339.html http://www.cnblogs.com/kissdodog/archive/2013/05/04/3060278. ...

  4. MVC Model数据验证

    概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...

  5. ASP.NET MVC 扩展数据验证 转

    此文只作记录 public class MaxWordsAttribute : ValidationAttribute { public MaxWordsAttribute(int maxWords) ...

  6. MVC 3 数据验证 Model Validation 详解

    在MVC 3中 数据验证,已经应用的非常普遍,我们在web form时代需要在View端通过js来验证每个需要验证的控件值,并且这种验证的可用性很低.但是来到了MVC 新时代,我们可以通过MVC提供的 ...

  7. [转]MVC自定义数据验证(两个时间的比较)

    本文转自:http://www.cnblogs.com/zhangliangzlee/archive/2012/07/26/2610071.html Model: public class Model ...

  8. (转)MVC 3 数据验证 Model Validation 详解

    继续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3 ...

  9. Asp.Net Mvc后台数据验证自测小Demo

    使用过MVC的同学一定不陌生MVC的模型绑定和模型校验,使用起来非常方便,定义好Entity之后,在需要进行校验的地方可以打上相应的Attribute,在Action开始时检查ModelState的I ...

随机推荐

  1. mybatis学习知识

    目录 1,目录 2,介绍 3,快速入门 4,配置XML 5,xml文件映射 6,动态sql 7,java api 8,Statement Builders 9,日志 1,介绍 1.1 介绍 1.1.1 ...

  2. Latex插入项目列表符号

    1. 关于 {itemize}里序号的形式 (这个在书里有介绍): latex默认生成的简单列表, 默认为一个小圆点,..... 而我们在写文章时可能想要一些不一样的列表符号, 比如 -, * 之类的 ...

  3. [Java基础]List,Map集合总结

    java.util包下: Collection    |--List 接口 |----ArrayList |----LinkedList |----Vector |-----Stack |---Set ...

  4. 电子商务(电销)平台中用户模块(User)数据库设计明细(转载)

    电子商务(电销)平台中用户模块(User)数据库设计明细 以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_base) ...

  5. 扩展方法 DataTable的ToList<T>

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.T ...

  6. 监听用户的后退键,解决部分浏览器回退的bug

    监听用户的后退键,解决部分浏览器回退的bug $(document).keydown(function (event) { // 监听backspace键 if (event.keyCode == 8 ...

  7. applicationCache

    <html manifest="/m.appcache"> window.applicationCache.onupdateready = function (e) { ...

  8. C++程序设计项目开发——银行自己主动提款机(二)

    函数的有关知识在后面章节会讲到,先提前了解下.在没有系统的学习完之前,咱们先来模仿着写一个样例,尝试这样的有效的学习方法.   尝试下这种学习方法. 显示功能选项 1.查询 2.取款 3.存款 4.转 ...

  9. Atitit.Base64编码原理与实现设计

    Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...

  10. UITextField/UITextView限制字数

    一,UITextFild限制字数(三步) 1,给textfild添加响应事件,类型为:UIControlEventEditingChanged [self.nickNameFild addTarget ...