ModelState.IsValid always returning true while mocking a request

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#

时间: 2024-11-01 21:32:34

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

ASP.NET MVC里ModelState.IsValid总是true或者总是false

model的属性如果不加验证相关的特性,ModelState.IsValid会永远为true:如果加了验证相关的特性,不满足验证规则时,ModelState.IsValid为false. 接收到参数属性类型与Model定义不符时,ModelState.IsValid也会为false. 参数模型: public class PersonModel { public string FirstName { get; set; } public string LastName { get; set; }

.Net Core MVC中的模型绑定、验证以及ModelState.IsValid的使用

Require就是说这个属性不能为空,EmailAddress就是说这个属性值必须符合一个Email地址格式. [Required(ErrorMessage ="尚有未填写项,请先完善")]        public string Name { get; set; }        [Required(ErrorMessage = "尚有未填写项,请先完善")]        [EmailAddress(ErrorMessage ="邮箱格式错误&quo

ModelState.IsValid返回false解决办法

ModelState.IsValid一直返回false时,怎么查找都找不到原因,可以通过如下方法查找出到底是哪个地方出的错误,对症下药 public static List<string> GetErrorListFromModelState (ModelStateDictionary modelState) { var query = from state in modelState.Values from error in state.Errors select error.ErrorMe

ModelState.IsValid一直为false的原因

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

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

模型验证通常在submit后调用Action之前进行验证,eg: public class ZhengXing    {        [Key]        public int ZhengXingId { get; set; }                   //使用Key关键字要引用System.ComponentModel.DataAnnotations [DisplayName("标题")]        [Required(ErrorMessage = "

ModelState.IsValid为false时的查找方法

if (!ModelState.IsValid) { List<string> sb = new List<string>(); //获取所有错误的Key List<string> Keys = ModelState.Keys.ToList(); //获取每一个key对应的ModelStateDictionary foreach (var key in Keys) { var errors = ModelState[key].Errors.ToList(); //将错误

modelstate.isvalid false

http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be that 0 errors and IsValid == false": here's MVC source code fromhttp://aspnet.codeplex.com/sourcecontrol/changeset/view/23011?projectName=aspnet#266501

asp.net core mvc 中 ModelState.IsValid 值是fasle

问题描述:ModelState.IsValid 值是fasle 可能是Model绑定的模型里面的内容不能为空,但是实际上是空的. 原文地址:https://www.cnblogs.com/xiaobudong/p/10102161.html

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

List<string> sb = new List<string>(); //获取所有错误的Key List<string> Keys = ModelState.Keys.ToList(); //获取每一个key对应的ModelStateDictionary foreach (var key in Keys) { var errors = ModelState[key].Errors.ToList(); //将错误描述添加到sb中 foreach (var error