gpt4 book ai didi

c# - ModelError 和 ValidationResult 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 21:54:10 28 4
gpt4 key购买 nike

在 ASP.NET MVC 中,存在一个包含 ModelErrorCollection 的 ModelState 类。 ModelError 表示模型绑定(bind)期间发生的错误。

我知道 ValidationResult 是从 ValidationAttribute.IsValid 方法返回的,并根据当前验证属性验证指定值。我知道我们可以继承 validationAttribute 并覆盖 IsValid() 以编写自定义模型验证属性。

使用 ModelState 的示例:http://www.asp.net/mvc/tutorials/older-versions/models-(data)/performing-simple-validation-cs

使用 ValidationResult 的示例:http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC

这两者如何协同工作?还是不合作?什么是交叉点?这个问题试图更好地理解 ASP.NET MVC 验证方法。

我为什么感兴趣,为什么不直接使用数据注释?答案是,我想更好地理解 ASP.NET MVC 中动态字段的验证。在我的产品上下文中,我不会有一个预先确定的属性模型来附加 validationAttributes。

最佳答案

我是 ASP.NET MVC 的新手。根据我对你提到的两个的理解。

ValidationResult 使我们能够通过简单地实现 IValidatableObject 来自定义链接到属性方法的错误消息。并让每个模型定义 Validate方法。所以在我看来,ValidationResult更像是一个用来配置模型验证的条件和结果的特性。

ModelState 让我们有可能通过执行 ModelState.AddModelError(memberName, validationResult.ErrorMessage) 将 ValidationResult 中的自定义错误作为 ModelState 的一部分。

结合 ValidationResult 和 ModelState,我们仍然可以使用 if (ModelState.IsValid)在我们的 Controller 中,而内部行为已经包含我们的自定义错误消息和验证条件。

Patrick 有一篇关于MVC 验证的详细文章,你可以引用here

关于c# - ModelError 和 ValidationResult 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com