C# 根据HTTP谓词设置必填字段
是否可以设置可选的[Required]属性,适用于修补程序或PUT。我有以下代码,但无论控制器调用什么,它总是必需的C# 根据HTTP谓词设置必填字段,c#,validation,asp.net-web-api,C#,Validation,Asp.net Web Api,是否可以设置可选的[Required]属性,适用于修补程序或PUT。我有以下代码,但无论控制器调用什么,它总是必需的 public class Car { [DataMember(Order = 0)] public string CarId { get; set; } [DataMember(Order = 1)] [Required] public string IsIncluded { get; set; } } 控制器 [HttpPatch] p
public class Car
{
[DataMember(Order = 0)]
public string CarId { get; set; }
[DataMember(Order = 1)]
[Required]
public string IsIncluded { get; set; }
}
控制器
[HttpPatch]
public HttpResponseMessage PatchCar(Car car)
{
// check if submitted body is valid
if (!ModelState.IsValid)
{
// Something is bad!
}
}
我想要的是如下的东西
public class Car
{
[DataMember(Order = 0)]
public string CarId { get; set; }
[DataMember(Order = 1)]
[Required(Patch = True, Put = False]
public string IsIncluded { get; set; }
}
然后,我的ModelState将考虑到这一点
我曾考虑为每个动作(动词)创建单独的派生类,但代码很快变得异常冗长。这是使用数据注释进行验证的缺点之一,不幸的是,它们不能有条件地添加 你有很多选择
希望这有帮助 谢谢你花了一天的时间来解决这个问题,我决定使用FluentValidation。看来效果不错。