• asp.net mvc 模型验证-最舒服的验证方式


    在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法

    1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法3000行代码的,还要改需求,想必您能了解作为coder当时的心情。

    2. 使用第三方框架,功能过于繁琐,还得自己学习,没必要

    3. Code Contract 不熟悉,貌似和第三方不同的是:MS提供的,先得高大上一点而已,本质一样

    下面的方法,既简单,维护也很方便。代码涉及点:

    1) 模型文件代码-添加验证规则,至于你想怎么添加,可以自定义Attribute,或者使用FCL中自带的(本例即是)

    2)模型数据操作的Action-在需要验证的Actiond中注入属性或者controller或者全局也行

    3)过滤器-添加错误捕捉,处理

    维护时,只需要修改各个业务模型中每个字段的验证规则即可

    模型建立:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    namespace Model_Validation.Models
    {
        public class User
        {
            [Required(ErrorMessage = "用户名不能为空")]
            public string UserName { get; set; }
    
            [RegularExpression("[a-z|A-Z|0-9]{6,20}", ErrorMessage = "密码位数太短")]
            public string UserPassword { get; set; }
    
            [DataType(DataType.EmailAddress, ErrorMessage = "邮件格式不正确")]
            public string EmailAddress { get; set; }
    
            [RangeAttribute(1, 1000, ErrorMessage = "评论长度1,1000")]
            public string Comments { get; set; }
        }
    }

    模型数据操作:

     [HttpPost, ModelValidationFilterAttribute]
            public JsonResult DoLogin(Models.User User)
            {
    
                return Json(new object(), JsonRequestBehavior.DenyGet);
            }
    ModelValidationFilterAttribute:数据验证的过滤器
     public class ModelValidationFilterAttribute : FilterAttribute,IActionFilter
        {
            // Summary:
            //     Called after the action method executes.
            //
            // Parameters:
            //   filterContext:
            //     The filter context.
            public void OnActionExecuted(ActionExecutedContext filterContext) { }
            //
            // Summary:
            //     Called before an action method executes.
            //
            // Parameters:
            //   filterContext:
            //     The filter context.
            public void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var _MS = ((Controller)filterContext.Controller).ModelState;
                if (!_MS.IsValid)
                {
                    var _FirstErrorField = _MS.FirstOrDefault();
                    string strHtmlId = _FirstErrorField.Key;
                    string strErrorMessage = _FirstErrorField.Value.Errors.FirstOrDefault().ErrorMessage;//这个数据你想怎么给JS都行.
                }
            }
        }
     
  • 相关阅读:
    根据时间进行条件筛选查询问题记录
    实体类中如何自动生成serialVersionUID
    MySql中的IFNULL、NULLIF和ISNULL用法
    Intellij IDEA运行报Command line is too long问题的解决
    百度搜索框搜索时显示或者隐藏历史搜索记录
    项目中引用其他的项目的模块运行时出现bean not be found
    MySQL中CONCAT()函数拼接出现NULL的问题
    String.contains(object o)报出空指针异常!
    uniapp 微信发送订阅消息
    python 定时任务apscheduler的使用
  • 原文地址:https://www.cnblogs.com/youlixishi/p/4497462.html
Copyright © 2020-2023  润新知