RESTful 服务上的 C# RequiredAttribute 消息出现两次
C# RequiredAttribute messages on RESTful service appear double
我正在使用 C# ASP.NET 完成 RESTful 服务。在我的模型上,我使用了 DataAnnotations 的 RequiredAttribute(来自 System.ComponentModel.DataAnnotation)。当我发送一个缺少属性的输入模型时(通过 Swagger 或 Postman),我收到了双 $"{属性} is required" 消息,尽管我在每个 [=26= 上只有一个 [Required] 属性].
我想它可能来自我的模型中的继承(我有时也有 three-level 层次结构并且没有三重消息,所以我认为这不是问题)或者以某种方式注册验证双重(但他们在哪里注册?) .例如,这是一个 parent:
public class CertificatePayload : AchievementBase
{
public string ExternalLink { get; set; }
}
还有这个 child class:
public class AchievementBase
{
[Required]
public string GrantedTo { get; set; }
[Required]
public string GrantedBy { get; set; }
}
关于我可以检查什么或可能是什么问题的任何想法?
因为没有答案...
我的一个同事用一个技巧解决了这个问题:删除必需的属性并为具有验证方法的对象添加IValidatable接口显示验证方法被调用了两次。 Stacktrace 两次都是一样的。正确的搜索词最终找到了解决方案:
我不得不重新绑定 ModelValidatorProvider。我将它应用到我绑定实体的地方。
我正在使用 C# ASP.NET 完成 RESTful 服务。在我的模型上,我使用了 DataAnnotations 的 RequiredAttribute(来自 System.ComponentModel.DataAnnotation)。当我发送一个缺少属性的输入模型时(通过 Swagger 或 Postman),我收到了双 $"{属性} is required" 消息,尽管我在每个 [=26= 上只有一个 [Required] 属性]. 我想它可能来自我的模型中的继承(我有时也有 three-level 层次结构并且没有三重消息,所以我认为这不是问题)或者以某种方式注册验证双重(但他们在哪里注册?) .例如,这是一个 parent:
public class CertificatePayload : AchievementBase
{
public string ExternalLink { get; set; }
}
还有这个 child class:
public class AchievementBase
{
[Required]
public string GrantedTo { get; set; }
[Required]
public string GrantedBy { get; set; }
}
关于我可以检查什么或可能是什么问题的任何想法?
因为没有答案...
我的一个同事用一个技巧解决了这个问题:删除必需的属性并为具有验证方法的对象添加IValidatable接口显示验证方法被调用了两次。 Stacktrace 两次都是一样的。正确的搜索词最终找到了解决方案:
我不得不重新绑定 ModelValidatorProvider。我将它应用到我绑定实体的地方。