ASB.net  MVC 视图验证里有一个IValidatableObject接口.这里面有一个验证方法.通常我们表单提交的时候dto就是用一个实现IValidatableObject这个接口的实体.

但是在测试的时候,当我们测试控制器的时候会发现控制器里调用ModelState.IsValid的时候,永远都是返回true.

这就需要扯到ASB.NET MVC的生命周期了.在这个生命周期里面.模型绑定先于方法调用运行,所以我们在控制器里面调用ModelState.IsValid的时候模型绑定已经完成(这不废话么)

而我们单元测试是直接实例化控制器,然后调用方法的,不走生命周期,所以不会验证视图,IsValid是一个可读的自动属性

 public bool IsValid
{
get
{
return Enumerable.All<ModelState>((IEnumerable<ModelState>) this.Values, (Func<ModelState, bool>) (modelState => modelState.Errors.Count == 0));
}
}

我们都没有模型绑定,erros.count 当然是0啦,那么ModelState.也就一直都是true了.

http://stackoverflow.com/questions/29715295/asp-net-mvc-httpcontext-current-is-null-while-mocking-a-request/29738778#

ModelState.IsValid always returning true while mocking a request的更多相关文章

  1. ModelState.IsValid

    model内的设置如下所示: /// <summary> /// 取得或设置邮编 /// </summary> [RegularExpression(@"(^[1-9 ...

  2. 为什么mvc里面的ModelState.IsValid一只都是true

    http://zhidao.baidu.com/link?url=H69JQBpF8vbJEOUUc1RCjRZZ05gSGn6PiPL740aGgR3qIfFTT__pt4KgEg7O47lReYR ...

  3. asp.net core 简化模型验证 modelState.IsValid不用每一个写

    第一种:直接在执行action之前验证模型 实现 IActionFilter public class ModelStateFilter : IActionFilter { public void O ...

  4. ModelState.IsValid总为false原因

    总结在开发中遇到的一个问题 ModelState.IsValid 一直是false 且在局部变量中,没有发现有问题啊,Model非常正常有木有,可是为什么 ModelState.IsValid 总是f ...

  5. ASP.NET MVC3 ModelState.IsValid为false的问题

    模型验证通常在submit后调用Action之前进行验证,eg: public class ZhengXing    {        [Key]        public int ZhengXin ...

  6. ModelState.IsValid一直为false的原因

    一,问题:ModelState.IsValid一直为false 二,解决方法和原因, 由于这个方法中传过来的RegisterForm模型的字段,某一个为空值,则会造成这个验证验证为false,去注释掉 ...

  7. 受够了if (ModelState.IsValid)?ActionFitlter也是一路的坑啊!

    这篇博客真是干货,干得估计还有点“磕牙”,所以还提供视频和代码.但基础稍弱的同学,怕还是得自行补充一些基础知识——就一篇文章,确实没办法面面俱到. 视频和代码下载:Demo - 百度云盘 · 一起帮 ...

  8. modelstate.isvalid false

    http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be th ...

  9. Mvc ModelState.isValid为false时,检查时那个字段不符合规则的代码

    List<string> sb = new List<string>(); //获取所有错误的Key List<string> Keys = ModelState. ...

随机推荐

  1. 上云、微服务化和DevOps,少走弯路的办法

    本文由  网易云发布. 作者:张亮 如果说一个项目的发展历程就像一段未知的旅程,那<云原生应用架构实践>就像一张地图,基于前人的探索标明了在这段旅途中将会碰到的障碍,并注明了越过这些障碍的 ...

  2. C++解析头文件-Qt自动生成信号定义

    目录 一.概述 二.实现思路 三.代码讲解 1.类图 2.QtCppDescription 3.测试 四.源代码 一.概述 上一篇文章C++解析头文件-Qt自动生成信号声明我们主要讲解了怎么去解析C+ ...

  3. 2017 NAIPC A:Pieces of Parentheses

    my team solve the problem in the contest with similar ideathis is a more deep analysis The main idea ...

  4. Java的8种基本数据类型

    待整理主题:Java的8种基本数据类型与对应封装类型.拆箱.装箱 =================================================================== ...

  5. 详述MySQL服务在渗透测试中的利用

    本文作者:i春秋签约作家——Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...

  6. SpringBoot入门之分散配置

    springboot默认支持两种格式的配置文件:.properties和.yml.其中.properties是属性文件,也是最常用的一种:.yml是yaml格式的文件,yaml是一种简洁的标记语言.例 ...

  7. iOS开发总结--三方平台开发之分享

    1.前言 在公司参与了多个应用三方平台的开发,涉及微信.微博.QQ.Facebook.meetup等,总结一下一般的接入三方平台SDK方法. 2.接入三方SDK 任何应用要接入三方平台,都需要在该平台 ...

  8. 【xsy1144】选物品 主席树

    题目大意:$N$ 件物品摆成一排,给每个物品定义两个属性 $A$ 和$ B$,两件物品的 差异度 定义为它们两种属性的差的绝对值中较大的一个.如果要求出一些物品的差异度,我们先定义一个 理想物品,使它 ...

  9. QuantLib 金融计算——基本组件之 Currency 类

    目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...

  10. 3、Xamarin Forms 调整安卓TabbedPage 下置

    降低学习成本是每个.NET传教士义务与责任. 建立生态,保护生态,见者有份.   教程晦涩难懂是我的错误. 对于默认的TabbedPage 上面进行页面切换 上面是安卓默认的情况 对我们大部分人来说都 ...