gpt4 book ai didi

c# - 根据 HTTP 动词设置必填字段

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:27 28 4
gpt4 key购买 nike

是否可以设置一个可选的 [Required] 属性,适用于 PATCH 或 PUT。我有以下代码,但无论 Controller 调用什么,它总是需要的。

public class Car
{
[DataMember(Order = 0)]
public string CarId { get; set; }
[DataMember(Order = 1)]
[Required]
public string IsIncluded { get; set; }
}

Controller ;

[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 会考虑到这一点。

我考虑过为每个 Action (动词)创建单独的派生类,但代码很快变得异常冗长。

最佳答案

不幸的是,这是使用数据注释进行验证的缺点之一,它们不能有条件地添加。

您有多种选择...

  1. 为每个动词创建单独的模型(或 View 模型)。
  2. 研究类似的东西.. http://andrewtwest.com/2011/01/10/conditional-validation-with-data-annotations-in-asp-net-mvc/将 required 扩展为 IfRequired 并向数据注释添加条件验证。 (我认为你需要自己动手,这可能会变得笨拙!)

  3. 试试 FluentValidation 之类的东西。 http://fluentvalidation.codeplex.com/ (根据您的应用要求,这可能是一个不错的选择)。

希望这对您有所帮助!

关于c# - 根据 HTTP 动词设置必填字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com