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 模型状态

如何在 ASP.NET MVC 中获取模型状态错误的集合?

会话 ID 不够随机 - ASP.NET

ASP.NET 和 SQL Server 2008 中的错误“用户 'NT AUTHORITY\IUSR' 登录失败”

ASP.NET MVC - 附加类型为“MODELNAME”的实体失败,因为同一类型的另一个实体已经具有相同的主键值