zoukankan      html  css  js  c++  java
  • MVC 多种 数据验证 post

    技术: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"/>

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

  • 相关阅读:
    ubuntu server安装桌面
    apache使用gzip压缩
    NoSQL开篇——为什么要使用NoSQL
    HTMl5的sessionStorage和localStorage
    apache服务器开启虚拟主机后localhost和ip无法访问的问题
    hg(Mercurial)使用参考
    meta的httpequiv属性详解
    分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
    框架入手心得
    最简单的弹出层代码
  • 原文地址:https://www.cnblogs.com/zhaokunbokeyuan256/p/6826122.html
Copyright © 2011-2022 走看看