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"/>

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

  • 相关阅读:
    ecshop php商城系统数据库结构及表的介绍分析
    laravel clone后需要做的操作
    十几万条数据的表中,基于帝国cms 。自己亲身体验三种批量更新数据的方法,每一种的速度是什么样的
    PHP 实现过滤参数字符的方法
    Antd Modal 可拖拽移动
    golang /js index 转换excel字母表头
    React 父组件调用子组件的方法
    React ant table 用 XLSX 导出excel文件
    css3 做出顶边倾斜的 梯形 div
    Windows10 office 点击链接提示您的组策略阻止我们为您完成此操作。设置ChromeHTML也无效.
  • 原文地址:https://www.cnblogs.com/zhaokunbokeyuan256/p/6826122.html
Copyright © 2011-2022 走看看