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" }))
{
	//验证通过,要做的事
	......
}
ASP.NET 模型验证2--验证部分属性的更多相关文章
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
		目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ... 
- asp.net core系列 45 Web应用 模型绑定和验证
		一. 模型绑定 ASP.NET Core MVC 中的模型绑定,是将 HTTP 请求中的数据映射到action方法参数. 这些参数可能是简单类型的参数,如字符串.整数或浮点数,也可能是复杂类型的参数. ... 
- ASP.NET MVC验证框架中关于属性标记的通用扩展方法
		http://www.cnblogs.com/wlb/archive/2009/12/01/1614209.html 之前写过一篇文章<ASP.NET MVC中的验证>,唯一的遗憾就是在使 ... 
- 【Asp.net入门15】第一个Asp.net应用程序-输入验证
		前言 所谓输入验证,顾名思义就是验证用户输入符不符合要求.前面我们已经完成了这个简单的应用程序,但还有一个问题需要解决:用户可以在Default.aspx窗体中 提交任何数据,甚至可以提交根本不包含任 ... 
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
		原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ... 
- ASP.NET MVC的客户端验证:jQuery验证在Model验证中的实现
		在简单了解了Unobtrusive JavaScript形式的验证在jQuery中的编程方式之后,我们来介绍ASP.NET MVC是如何利用它实现客户端验证的.服务端验证最终实现在相应的ModelVa ... 
- ASP.NET MVC的客户端验证:jQuery的验证
		之前我们一直讨论的Model验证仅限于服务端验证,即在Web服务器根据相应的规则对请求数据实施验证.如果我们能够在客户端(浏览器)对用户输入的数据先进行验证,这样会减少针对服务器请求的频率,从而缓解W ... 
- ASP.NET WEBAPI 的身份验证和授权
		定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ... 
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
		ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ... 
- 采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展
		原文:http://www.cnblogs.com/sanshi/archive/2012/06/22/2558476.html 若是持久Cookie,Cookie的有效期Expiration属性有当 ... 
随机推荐
- P2746 [USACO5.3]校园网Network of Schools [tarjan缩点]
			题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 BB 在 AA 学校的分发列表中,AA 也不一定在 BB 学校的列表中. ... 
- POJ 3253 Fence Repair 贪心 优先级队列
			Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 77001 Accepted: 25185 De ... 
- jQuery---jQuery插件
			jQuery插件 使用插件的步骤 1. 引入jQuery文件 2. 引入插件(如果有用到css的话,需要引入css) 3. 使用插件 <!--1. 引入jquery的js文件--> < ... 
- 纪中9日T4 2298. 异或
			2298. 异或 (File IO): input:gcdxor.in output:gcdxor.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 题目描述 Sarv ... 
- 二维数组 A[m][n] 按行优先和按列优先的 下标地址转换公式
			设二维数组 A[m][n] 按行优先存储, 每个元素占 p 个字节, 则 Loc(i, j) 的地址为 (i * n + m) * p, 第 i 行前面有 i 行, 每行有 n 个元素, 加上 第 i ... 
- SqlServer 常用语句方法
			批量生成删表语句 select 'drop table '+b.name+'.'+a.name+';' from sys.tables a left join sys.schemas b on a.s ... 
- 面试官:说说TCP和UDP的区别和应用场景
			原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! 上一篇聊完 一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表 ... 
- ubuntu set up 6 - NTFS Mount
			1. NTFS Mounted as read-only https://askubuntu.com/questions/1138076/ubuntu-18-04-cant-write-on-ntfs ... 
- dcloud_base连接失败(root:admin123!@#qwe@tcp(192.168.8.205:3306)/dcloud_base) Error 1129: Host '192.168.8.205' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
			mysql -uroot -p admin123!@#qwe show global variables like '%max_connect_errors%'; set global max_con ... 
- afl-fuzz技术初探
			afl-fuzz技术初探 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/8280352.html 参考了: http://pwn4.fun/2017/09/21/ ... 
