当提供枚举时,C#Web API中的POST方法接收空模型

当提供枚举时,C#Web API中的POST方法接收空模型,c#,json,rest,asp.net-web-api,postman,C#,Json,Rest,Asp.net Web Api,Postman,我正在尝试通过此模型: public class EquipmentRequestModel { public int PackingBenchNo { get; set; } public PackingMaterial Equipment { get; set; } } public enum PackingMaterial { Bubblewrap, Envelopes, InvoicePaper, Pen } 采用以下方法: [Http

我正在尝试通过此模型:

public class EquipmentRequestModel
{
    public int PackingBenchNo { get; set; }
    public PackingMaterial Equipment { get; set; }
}

public enum PackingMaterial
{
    Bubblewrap,
    Envelopes,
    InvoicePaper,
    Pen
}
采用以下方法:

[HttpPost]
public IActionResult RequestEquipment(EquipmentRequestModel equipmentRequest)
但是,当我通过邮递员发送此请求时:

{
    "PackingBenchNo" : 1,
    "Equipment" : "Bubblewrap"
}

通过该方法接收的数据为
null
。如果使用枚举值的数字表示,则模型将传递数据。但是,如果可能的话,我希望使用字符串表示法以提高可读性。

此响应对于注释来说太长,即使从技术上讲这可能不是一个答案

我通过创建一个新的Asp.NETCore3.1API项目(在VS2019年)重新创建了您的情况,它按预期工作。我添加了EquipmentRequestModel和enum,然后将RequestEquipment添加到默认模板创建的默认WeatherForecastController中

我为DI添加了Newtonsoft.Json 12.0.3(最新版本)和Microsoft.AspNetCore.Mvc.NewtonsoftJson。我在Startup.cs中将AddNewtonsoftJson()添加到AddControllers调用中

我用邮递员发了你的有效载荷,它不是空的。我尝试了字符串和int,两次模型都顺利通过RequestEquipment方法

{
    "PackingBenchNo" : 1,
    "Equipment" : "Bubblewrap"
}    
or
{
    "PackingBenchNo" : 1,
    "Equipment" : 0
}
您是否在启动时为Netwonsoft设置了任何可能导致您出现问题的异常选项?您使用的是Core 3.1还是旧版本?(还是5β?)


您使用的是.Net核心还是框架?如果是Core,您使用的是Newtonsoft还是System.Text.Json?我使用的是.NET Core和Newtonsoft