- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 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/
我在尝试确定哪个 ValidationAttribute 返回了特定的 ModelError 时遇到了问题。我的网络 API 中有一个端点,它采用以下模型; public class MyClass
在 ASP.NET MVC 中,存在一个包含 ModelErrorCollection 的 ModelState 类。 ModelError 表示模型绑定(bind)期间发生的错误。 我知道 Vali
我正在开发 .NET MVC3 应用程序。当我的 Controller 出现错误时,错误永远不会出现在我的 View 中。为什么? 我的操作方法如下所示: [HttpPost] public Acti
我是一名优秀的程序员,十分优秀!