zoukankan      html  css  js  c++  java
  • ASP.NET 模型验证2--验证部分属性

    在开发MVC时,模型验证非常常见,平常我们用的应该都是全验证

    if(ModelState.IsValid)
    {
    //验证成功要做的事
    .....
    }

    但是有时候我们需要部分验证,比如修改用户信息时,因为更新用户时,并不是更新用户的所有信息,所以这时的模型也是不完整,也肯定不会通过验证。
    这里有一个模型类,用作示例

    public class User
    {
    [Required]
    public int ID { get; set; }

    [Required]
    [StringLength(18,MinimumLength = 2,ErrorMessage = "名称字符长度在2-18之间")]
    public string Name { get; set; }

    [Required]
    [Range(0,100,ErrorMessage = "年龄在0-100")]
    public int Age { get; set; }
    }

    情况一:不验证的项相对较少
    我们可以使用Remove方法

    //不验证年龄项
    ModelState.Remove("Age");

    情况二:要做验证项相对较少
    可惜的是,我查看了MSDN好像并没有找到,有关此功能的方法(如果大家找到了的话,请评论区留言= =)
    所以目前写了扩展方法来实现该功能

    /// <summary>
    /// 验证实体模型中的部分属性
    /// </summary>
    /// <param name="ModelState"></param>
    /// <param name="keys">要验证的属性List集合</param>
    /// <returns></returns>
    public static bool IsPartValid(this ModelStateDictionary ModelState,List<string> keys)
    {
    //遍历要验证部分属性
    foreach (var item in keys)
    {
    //尝试获取对应键的值
    //有不符合的模型属性 - Errors错误集合大于0
    if (ModelState.TryGetValue(item,out ModelState modelState) && modelState.Errors.Count > 0)
    return false;
    }
    return true;
    }


    然后直接使用,把要验证的存入一个集合就可以了

    //验证模型中的部分属性
    if (ModelState.IsPartValid(new List<string> { "Name", "Age" }))
    {
    //验证通过,要做的事
    ......
    }

  • 相关阅读:
    Java数据类型转换(自动转换和强制转换)
    Java数据类型以及变量的定义
    Java8新特性_日期时间新类 LocalDate、LocalTime、LocalDateTime
    Java8新特性_接口中的默认方法
    java8 新特性 Optional容器类
    Java8新特性 并行流与串行流 Fork Join
    Java8新特性_stream API 练习
    IDEA导入JUnit4
    Reduce:规约;Collector:收集、判断性终止函数、组函数、分组、分区
    【Linux】排序命令sort
  • 原文地址:https://www.cnblogs.com/wfy680/p/12323387.html
Copyright © 2011-2022 走看看