首页 > 技术文章 > MVC 多种 数据验证 post

zhaokunbokeyuan256 2017-05-08 17:30 原文

技术: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)]  //最大长度不超过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"/>

 


 

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

 

推荐阅读