我有想法使用Data Annotations来验证ModelState。这非常有效。我遇到的问题是在[post]上的[Key]字段上强制执行[Required] Data Annotation。我们的数据层负责设置Id,我们不希望任何使用该服务的人不得不担心Id的问题。在WebApi2中有解决方法吗?
我查看了this问题,并在检查有效的ModelState之前从POST方法中删除了ModelState中的Id字段。问题在于我们对ModelState使用过滤器。
修改
在做了一些更多的研究之后,我基本上想要做的是[Bind]属性在MVC中的作用。经过一些研究,看起来这不是一个在WebApi中实现的功能。如果有人有任何想法,请随时发布。
答案 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; }
}
希望这有帮助。