“[必需]”POST方法未强制执行数据注释

时间:2014-02-11 16:48:47

标签: asp.net-web-api data-annotations model-validation asp.net-web-api2

我有想法使用Data Annotations来验证ModelState。这非常有效。我遇到的问题是在[post]上的[Key]字段上强制执行[Required] Data Annotation。我们的数据层负责设置Id,我们不希望任何使用该服务的人不得不担心Id的问题。在WebApi2中有解决方法吗?

我查看了this问题,并在检查有效的ModelState之前从POST方法中删除了ModelState中的Id字段。问题在于我们对ModelState使用过滤器。

修改

在做了一些更多的研究之后,我基本上想要做的是[Bind]属性在MVC中的作用。经过一些研究,看起来这不是一个在WebApi中实现的功能。如果有人有任何想法,请随时发布。

1 个答案:

答案 0 :(得分:0)

您可以做的是用数据传输对象替换您的实体,该对象与没有ID字段的原始实体相同。例如,

原始实体可能如下所示

public class User 
    {
        [Required]
        public Guid UserId { get; set; }
        public string Firstname { get; set; }
        public string Lastname { get; set; }
        public string Username { get; set; }
        public string Email { get; set; }

    }

并且DTO可能看起来像这样

public class UserDto 
    {

        public string Firstname { get; set; }
        public string Lastname { get; set; }
        public string Username { get; set; }
        public string Email { get; set; }

    }

希望这有帮助。