我的控制器中有这个post方法
[HttpPost]
public Task<AddClientAppSettingResponse> Post(AddClientAppSettingCommand mysetting)
=> Mediator.Send(mysetting);
我的帖子方法接受AddClientAppSettingCommand
模型,正如你所看到的:
public class AddClientAppSettingCommand : IRequest<AddClientAppSettingResponse>
{
public ClientAppSettings Setting { get; set; }
public AddClientAppSettingCommand(ClientAppSettings setting)
{
Setting = setting;
}
}
以下是我的模型类:
public class ClientAppSettings : BaseEntity
{
public ClientAppSettings(string userId) : base($"ClientAppSettings/{userId}")
{
}
public bool LightTheme { get; set; }
public OrderSettings Order { get; set; }
public NotchSettings Notch { get; set; }
public int PageSize { get; set; }
public bool ApplyCommissionInPortfolio { get; set; }
public bool UseClosingPriceInPortfolioTotalValue { get; set; }
public bool ShowNotifications { get; set; } = true;
public bool NoSleep { get; set; } = true;
public bool NoBalance { get; set; } = false;
public bool DataTracker { get; set; } = false;
public bool UserStatusBarToUp { get; set; } = false;
public bool PortfolioBasedOnLastPositivePeriod { get; set; } = false;
}
public class OrderSettings
{
public long BuyQuantity { get; set; }
public long SellQuantity { get; set; }
public float Tick { get; set; }
public string TickType { get; set; }
public bool PriceFromHeadline { get; set; }
public bool OrderConfirmation { get; set; }
public bool DivideOrderToMultiple { get; set; }
}
public class NotchSettings
{
public bool Up { get; set; }
public bool Down { get; set; }
}
但是当我使用poster调用我的API时,这些值是
{
"setting":{
"LightTheme":true,
"Order":{
"BuyQuantity":"1",
"SellQuantity":"1",
"Tick":"1.0",
"TickType":"asas",
"PriceFromHeadline":true,
"OrderConfirmation":true,
"DivideOrderToMultiple":true
},
"Notch":{
"Up":true,
"Down":true
},
"PageSize":"10",
"ApplyCommissionInPortfolio":true,
"UseClosingPriceInPortfolioTotalValue":true,
"ShowNotifications":true,
"NoSleep":true,
"NoBalance":true,
"DataTracker":true,
"UserStatusBarToUp":true,
"PortfolioBasedOnLastPositivePeriod":true
}
}
我收到这个错误
类型"domain.Entity.ClientAppSettings"的反序列化构造函数中的每个参数在反序列化时都必须绑定到对象属性或字段。每个参数名称必须与对象上的属性或字段匹配。匹配可以是不区分大小写的
注意,我使用MediatR进行CQRS,我遵循了这个方法,但它没有起作用。我在上放了一个[JsonConstructor]
public AddClientAppSettingCommand(ClientAppSettings setting)
{
Setting = setting;
}
但它不起作用。我的变量setting
为空
您需要一个api输入参数的无参数构造函数
public class AddClientAppSettingCommand : IRequest<AddClientAppSettingResponse>
{
public ClientAppSettings Setting { get; set; }
public AddClientAppSettingCommand() {}
public AddClientAppSettingCommand(ClientAppSettings setting)
{
Setting = setting;
}
}
设置也是如此
public class ClientAppSettings : BaseEntity
{
public ClientAppSettings(){}
}