【问题标题】:Proper way to get property name that is not found in the receiving json asp.net webapi获取在接收json asp.net webapi中找不到的属性名称的正确方法
【发布时间】:2021-03-06 05:23:59
【问题描述】:

我有一个 web api POST Url 接收和反对

[HttpPost]
public ResultObject SaveLetter(FormModel surplusForm)

如果某个属性不在接收json上,则返回以下消息:

“在 JSON 中找不到必需的属性 'PropertyName'。路径 'SomePath'

这个属性被Required属性修饰

public class FormModel {
    [Required]
    public long? PropertyName{ get; set; }
    ///Other properties
    
}

我需要有我的返回消息并且需要找到不在接收json中的PropertyName,获取它的最佳方法是什么?

其实是一个exception在模型验证过程中,有没有办法在modelState出现异常时获取字段名?

【问题讨论】:

  • 您可以删除Required 并在代码中检查该属性在响应中是否为null
  • 在这种情况下,它可以通过空值发送...在我的情况下,该属性在接收 json 时不存在。
  • 然后您可以发送json字符串,将参数声明为字符串并检查属性值

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

你不能长时间使用吗?和[必需]一起。如果您将 Property 设为 null,它将破坏必需的属性。你必须修复你的财产。如果你删除 ?从 long 开始,默认情况下它将是必需的属性,您不需要 [Required] 属性:

 
    public long PropertyName{ get; set; }

或者,如果您仍想验证,则必须这样做:

[Range(1, long.Max, ErrorMessage = "Required")]
 public long PropertyName{ get; set; }

这应该也可以,虽然没有多大意义:

[Range(1, long.Max, ErrorMessage = "Required")]
 public long? PropertyName{ get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多