2017-03-17 72 views
0

我正在使用C#ASP.NET完成REST式服务。在我的模型上,我使用DataAnnotations的RequiredAttribute(来自System.ComponentModel.DataAnnotation)。当我发送一个缺少属性的输入模型时(通过Swagger或Postman),我得到了双“$ {property}是必需的”消息,尽管每个属性只有一个[Required]属性。 我想也许它来自我的模型中的继承(我有时也有三级层次结构,没有三重消息,所以我认为这不是问题),或者以某种方式注册验证(但它们在哪里注册?)。例如,这是一个家长:C#必需RESTful服务上的属性消息显示为双倍

public class CertificatePayload : AchievementBase 
{ 
    public string ExternalLink { get; set; } 
} 

这一个子类:

public class AchievementBase 
{ 
    [Required] 
    public string GrantedTo { get; set; } 
    [Required] 
    public string GrantedBy { get; set; } 
} 

什么我可以检查或可能是什么问题,任何想法?

回答

1

因为没有回答... 我的同事用一个技巧解决了这个问题:删除所需的属性并使用验证方法将IValidatable接口添加到对象,表明验证方法被调用了两次。两次Stacktrace都一样。正确的搜索词最终找到了解决方案: StackOverflow-ASP.NET WEB API 2 - ModelBinding Firing twice per request

我必须重新绑定ModelValidatorProvider。我将它应用到我绑定实体的地方。