asp.net core ModelState.IsValid 总是返回 true,为什么 ?

愚者只看星不看答案 2016-10-31 04:34:45
模型


public class Membership
{
public int ID{get;set;}

[Required]
[EmailAddress]
public string Email{get;set;}

public string RealName{get;set;}

[Required]
[RegularExpression(@"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})")]
public string Password{get;set;}

public string PhoneNumber{get;set;}

public string Role{get;set;}

public bool IsLockedOut{get;set;}

public DateTime LastChanged{get;set;}

}


控制器方法


[HttpPost]
public async Task<IActionResult> Login([FromBody] Membership entity)
{

System.Console.WriteLine($"==== {ModelState.IsValid} {entity==null} ===");

if(!ModelState.IsValid)
return BadRequest();
}



我使用fiddler来测试上面的方法,我在请求正文中没有发送什么任何,正常情况下发送 {"email":"xyp@email.com","password":"password"},但是在 entity 为null的情况下,ModelState.IsValid 依然为true,为什么?多谢。



...全文
259 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
修改一下昵称 2016-11-01
  • 打赏
  • 举报
回复 1
有时候教程不一定100%对,只有自己实践过后才会知道
D56233577 2016-11-01
  • 打赏
  • 举报
回复
引用 6 楼 truelove12 的回复:
@Chinajiyong @D56233577 原来那么多的教程都tm是错的。。
我印象中“ASP.NET MVC 5 网站开发之美”这本书有提到过这个点,不少教程都是忽略的。
  • 打赏
  • 举报
回复
@Chinajiyong @D56233577 原来那么多的教程都tm是错的。。
EnForGrass 2016-10-31
  • 打赏
  • 举报
回复
IsValid属性是如下实现的,因为entity=null,errors无数据,所以为true。

public bool IsValid
{
    get
    {
        return this.Values.All<ModelState>(delegate (ModelState modelState) 
        {
            return (modelState.Errors.Count == 0);
        });
    }
}
D56233577 2016-10-31
  • 打赏
  • 举报
回复
引用 3 楼 truelove12 的回复:
[quote=引用 1 楼 D56233577 的回复:] 既然发送了 {"email":"xyp@email.com","password":"password"},entity不应该为null,你确定?
fiddler中我没有发送任何消息。。。[/quote] 如果输入为null,那么ModelState.IsValid始终为true。 http://stackoverflow.com/questions/17923622/modelstate-isvalid-even-when-it-should-not-be
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
既然发送了 {"email":"xyp@email.com","password":"password"},entity不应该为null,你确定?
fiddler中我没有发送任何消息。。。
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
既然发送了 {"email":"xyp@email.com","password":"password"},entity不应该为null,你确定?
感谢回复,我说fiddler中我没有消息也没有 发送。。
D56233577 2016-10-31
  • 打赏
  • 举报
回复
既然发送了 {"email":"xyp@email.com","password":"password"},entity不应该为null,你确定?
【有功-无功协调优化】基于改进多目标粒子群优化算法(小生境粒子群算法)的配电网有功-无功协调优化研究(Matlab代码实现)内容概要:本文围绕“基于改进多目标粒子群优化算法(小生境粒子群算法)的配电网有功-无功协调优化研究”展开,重点介绍了利用小生境粒子群算法对配电网中的有功与无功功率进行协调优化的方法。研究结合Matlab代码实现,旨在降低网络损耗、提升电压质量,并增强配电网运行的经济性与稳定性。文中详细阐述了改进多目标粒子群算法的设计思路,包括引入小生境机制以增强种群多样性、避免早熟收敛,同时构建了综合考虑有功出力调节、无功补偿装置投切及分布式电源协同控制的优化模型。通过在标准测试系统(如IEEE33节点系统)上的仿真验证,展示了该方法在多目标优化中的有效性与实用性。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力系统优化、智能算法应用及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于含分布式电源的主动配电网运行优化;②解决多目标环境下有功与无功资源的协同调度问题;③为配电网节能降损、电压调控提供算法支持与仿真验证手段; 阅读建议:建议结合提供的Matlab代码进行仿真实践,重点关注算法参数设置、适应度函数设计及多目标解集的Pareto前沿分析,同时可扩展至不同网络结构与运行场景以加深理解。

62,256

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧