首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型绑定在从.NET核心2.2迁移到3.0-预览-9之后停止工作

模型绑定在从.NET核心2.2迁移到3.0-预览-9之后停止工作
EN

Stack Overflow用户
提问于 2019-09-10 14:53:19
回答 1查看 886关注 0票数 6

我有一个角前端应用程序和一个ASP.NET核心后端应用程序。一切都很好,直到我决定从ASP.NET Core2.2迁移到3.0预览-9。

例如,我有一个DTO类:

代码语言:javascript
复制
public class DutyRateDto
{
    public string Code { get; set; }
    public string Name { get; set; }
    public decimal Rate { get; set; }
}

以及一个示例JSON请求:

代码语言:javascript
复制
{
    "name":"F",
    "code":"F",
    "rate":"123"
}

在迁移之前,这是一个有效的请求,因为123被解析为十进制。但是现在,迁移之后,我在这个主体上得到了一个HTTP 400错误:

代码语言:javascript
复制
{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|3293cead-4a35656a3ae5e95b.",
    "errors": {
        "$.rate": [
            "The JSON value could not be converted to System.Decimal. Path: $.rate | LineNumber: 0 | BytePositionInLine: 35."
        ]
    }
}

此外,它没有触及我的方法的第一行--它可能是在模型绑定期间抛出的。

但是,如果我发送以下内容:

代码语言:javascript
复制
{
    "name":"F",
    "code":"F",
    "rate":123
}

一切都很好。但这意味着我需要改变我到目前为止所写的每一个请求。所有其他数据类型(intbool、…)也是如此。。

有人知道我怎样才能避免这种情况,使它在不改变我的要求的情况下发挥作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-10 14:59:01

ASP.NET核心3使用System.Text.Json而不是Newtonsoft.Json (又名JSON.NET)来处理JSON。JSON.NET支持从字符串到十进制的解析,但System.Text.Json不支持。在这个阶段,最简单的事情就是切换到使用JSON.NET,如文档中所描述的。

将十进制作为JSON数字传递将更正确,但很明显,这对您来说不是一个选项。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57873403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档