在 .NET Core 中不使用 Json属性 的不区分大小写 属性 绑定
Case-Insensitive Property Binding Without Using JsonProperty in .NET Core
我有一个 C# ASP.NET Core Web Api
应用程序和 C# ASP.NET Core MVC
个应用程序
在这种情况下,MVC
应用使用如下模型调用 API
应用(客户端是通过 AutoRest
生成的):
var thing = await thingApi.ThingPost(new ThingModel { ThingID = ThingID });
此时,我可以调试以查看 ThingID
设置了我的值。当我调试 API
应用程序时,我可以看到 属性 没有传输... 属性 定义如下:
public long ThingID { get; set; }
然而,当我用
装饰它时
[JsonProperty(PropertyName = "thingID")]
然后绑定值。我想弄清楚如何绑定它而不必用该属性装饰它。某种不区分大小写的解析器之类的?
我试过使用:
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
和
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());
在没有更新客户端的情况下,两者都无法解析 属性。问题是我不想让客户改变。它应该按现在的样子生成,但我希望将值绑定到 属性 而不管客户端中的情况如何。我该怎么做?
我找到了罪魁祸首...我的模型继承自 base class
(我可能应该在我的问题中提到)并且我的 base class
装饰有:
[DataContract]
这显然会强制您指定要公开的每个属性...所以有点麻烦。
我有一个 C# ASP.NET Core Web Api
应用程序和 C# ASP.NET Core MVC
个应用程序
在这种情况下,MVC
应用使用如下模型调用 API
应用(客户端是通过 AutoRest
生成的):
var thing = await thingApi.ThingPost(new ThingModel { ThingID = ThingID });
此时,我可以调试以查看 ThingID
设置了我的值。当我调试 API
应用程序时,我可以看到 属性 没有传输... 属性 定义如下:
public long ThingID { get; set; }
然而,当我用
装饰它时[JsonProperty(PropertyName = "thingID")]
然后绑定值。我想弄清楚如何绑定它而不必用该属性装饰它。某种不区分大小写的解析器之类的?
我试过使用:
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
和
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());
在没有更新客户端的情况下,两者都无法解析 属性。问题是我不想让客户改变。它应该按现在的样子生成,但我希望将值绑定到 属性 而不管客户端中的情况如何。我该怎么做?
我找到了罪魁祸首...我的模型继承自 base class
(我可能应该在我的问题中提到)并且我的 base class
装饰有:
[DataContract]
这显然会强制您指定要公开的每个属性...所以有点麻烦。