阻止为.NET Core Web API中的后控制器模型中未提供的属性设置默认值



我正在尝试禁用默认值?webapi的特性。目前我在api控制器中有一个post方法,以类作为输入:

[HttpPost]
public IActionResult MyMethod(MyClass class)
public class MyClass
{
public bool FirstProp {get;set;}
public decimal SecondProp {get;set;}
}

包含bool和decimal必需值。当我发送这个值为null的json时,我的api表现良好,它会抛出一个异常,即值对指定列无效。

问题是,当我不发送此列(例如json:{ }(,并且我使用默认值(在我的情况下,对于FirstProp类型为false,对于SecondProp类型则为0(进入控制器方法类时。对于我的post-method控制器,阻止这种序列化/映射的最佳方式是什么?

问题是当我不发送此列时(例如json:{ }(

如果不传递任何属性,一种更简单的方法是使字段required:

public class MyClass
{
[JsonProperty(Required = Required.Always)]
public bool FirstProp { get; set; }
[JsonProperty(Required = Required.Always)]
public decimal SecondProp { get; set; }
}

对于asp.net核心3.x,您需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson并添加NewtonsoftJson支持,如下所示:

services.AddControllers().AddNewtonsoftJson();

参考:

https://stackoverflow.com/a/58443810/11398810

最新更新