0

使用 .NET 6.0。当尝试将参数绑定到请求的主体时,我想为请求null中未包含的属性分配一个值。

考虑以下:

public class SomeRequest
{
    [JsonProperty(PropertyName = "property1")]
    public string prop1 { get; set; }

    [JsonProperty(PropertyName = "property2")]
    public string prop2 { get; set; }       
}

[Route("[controller]")]
[ApiController]
public class MyController : ControllerBase
{
    [HttpPost]
    public async Task<SomeResponse> Post([FromBody] SomeRequest value1)
    {
    }
}

如果我发送以下请求{"property1":"abc"},我想value1成为{"property1":"abc","property2":null},但我得到一个 HTTP 400,其中包含一条property2必需的错误消息。

使 property2 成为的最佳方法是null什么?我很确定它在 .NET Core 3.1 中是这样工作的。

谢谢

4

1 回答 1

1

.NET 6 项目默认启用可为空的上下文- 这意味着 prop2 被视为不可为空的字符串。

要按照您的预期行事,要么:

  • 使 prop2 可以为空 ( string?)
  • 在项目级别禁用可为空的上下文(<Nullable>disable</Nullable>在 csproj 中)
    • 可以使用预处理器指令在源代码级别完成,但它不适用于您的用例。
于 2022-02-19T08:08:25.197 回答