ASP.NET 模型状态错误 $.在键值
Posted
技术标签:
【中文标题】ASP.NET 模型状态错误 $.在键值【英文标题】:ASP.NET ModelState Errors $. in KeyValue 【发布时间】:2021-10-29 17:00:46 【问题描述】:我的模型有一个属性 DateOfBirthUtc,它是 DateTime 类型,并且有一个属性 [Required]。当我将这个带有无效 DateOfBirthUtc(空)的模型发布到我的操作方法时,我收到了预期的错误。
我不明白的是,为什么 ModelState 产生的键/值对中的错误被称为“$.dateOfBirthUtc”,“$.”是什么意思?是什么意思,为什么要加到键上?
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-6999b89fb406304fbc11a17676de581a-5b59646fda25f248-00",
"errors":
"$.dateOfBirthUtc": [
"The JSON value could not be converted to System.DateTime. Path: $.dateOfBirthUtc | LineNumber: 4 | BytePositionInLine: 22."
]
【问题讨论】:
【参考方案1】:这是您的 JSON 的根,它从根显示您在 JSON 对象中的属性位置
【讨论】:
谢谢!此链接也很有帮助:help.talend.com/r/en-US/Cloud/api-tester-user-guide/jsonpath 但我仍然不知道为什么 ModelState 有时会返回错误键,例如 json 键“$.dateOfBirthUtc”,而其他错误则返回 c# 属性名称“DateOfBirthUtc”。 我认为当它返回 $ 时,这是将 JSON 转换为您的类的问题,但是当它是 C# 属性时,它已经被很好地转换了,但不满足此属性的要求以上是关于ASP.NET 模型状态错误 $.在键值的主要内容,如果未能解决你的问题,请参考以下文章
如何正确地将 asp.net 核心模型状态错误反序列化为 xamarin 形式的对象
如何反序列化 422 无法处理的实体错误模型并将错误绑定到 asp.net core razor pages 模型状态