【发布时间】:2020-04-15 15:30:26
【问题描述】:
我有简单的带有模型的 ASP.NET Core WebApi
public class Model
{
public bool? Value {get; set;}
}
和端点
[HttpPost]
public async Task<IActionResult> Create([FromBody] Model model)
当我使用正文发出 POST 请求时
{
"Value" : 7676
}
或
{
"Value" : 2955454545645645645645645645654534534540
}
然后model.Value == true
如何避免这种情况?在这种情况下我需要一些错误,因为7676 不是布尔值。
我找到了this question 和this,但解决方案不适合我,因为我在不同的项目中有很多模型(因此,很难将 JsonConverter 属性从答案添加到所有属性)
另外,我正在寻找任何描述这种行为的文档。
【问题讨论】:
-
编写自定义模型绑定器并使用它
-
当您尝试发布无效的 Json 属性值时,您应该会收到类似“无法将 JSON 值转换为 System.Nullable`1[System.Boolean]。路径:$.Value”的错误。您使用的是哪个版本的 asp.net core?
-
@vendettamit 是的,我也这么认为,但行为就像我描述的那样。 ASP.NET Core 2.2
-
@Milney 你能帮忙定制模型活页夹吗?我有很多模型,我可以为所有模型中的布尔属性创建活页夹吗?我试过这个docs.microsoft.com/en-us/aspnet/core/mvc/advanced/…,但总是得到
ValueProviderResult.None -
创建一个从
JsonConverter派生的自定义MyBookConverter,然后注册services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.Converters.Add(new MyBoolConverter());});
标签: c# asp.net-core asp.net-web-api asp.net-core-webapi