gpt4 book ai didi

asp.net - 为什么只有在属性验证通过时才调用 IValidatableObject.Validate?

转载 作者:行者123 更新时间:2023-12-04 00:48:33 25 4
gpt4 key购买 nike

在我的模型中,似乎 Validate()仅在两个属性都通过验证后调用。

public class MyModel : IValidatableObject 
{
[Required]
public string Name { get; set;}

[Required]
public string Nicknames {get; set;}

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(Nicknames != null && Nicknames.Split(Environment.NewLine.ToCharArray()).Count() < 2)
return yield result new ValidationResult("Enter at least two nicknames, new [] { "Nicknames" });
}
}

当用户在 Nicknames 中输入单行文本时文本区域但留下 Name文本框为空,只有 Required Name 的错误消息属性显示。应该从 Validate() 显示的错误消息功能永远不会出现。

只有在 Name 中输入名称后文本框和 Nicknames 中的一些文本文字是 Validate()调用的函数。

这是它应该如何工作?当错误是在当前页面上引起时,用户在后续页面上显示错误消息似乎很奇怪。

最佳答案

这是设计使然。在所有属性都通过验证之前不会触发对象级验证,否则对象可能不完整。 Validate 方法用于将一个属性与另一个属性进行比较。在您的情况下,您应该编写一个自定义属性验证器。

关于asp.net - 为什么只有在属性验证通过时才调用 IValidatableObject.Validate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769439/

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