无法使用[FromBody]获取键值对的值



数据从前端发送到后端。请求体是这样创建的

var stateWithValue = {};
for (const item in self.pricings()) {
state[item] = self.pricings()[item]["Comment"];
}
var request = {
generalComment: self.generalComment(),
stateWithValue: stateWithValue
};

请求正文如下

{
generalComment: "test comment",
stateWithValue:
{
Delaware: "Value1",
California: "Value2",
Texas: "Value3"
}
}

stateWithValue中的元素个数每个请求都可以不同。

在后端,使用[FromBody]属性

获取数据
public WebApiResponseGeneric<EmptyResponse> State([FromBody] StateRequest request)

StateRequest.cs

public class StateRequest : PublicRequest
{
public string GlobalComment { get; set; }
public StateWithValue StateWithValue { get; set; }
}
public class StateWithValue
{
public string State { get; set; }
public string Value { get; set; }
}

在网络选项卡(开发控制台)有效载荷如下所示

generalComment:测试通用注释stateWithValue(特拉华州):Value1stateWithValue(加州):Value2stateWithValue(德州):Value3

在后端请求对象中,StateWithValue。StateWithValue状态。

您必须发布PublicRequest类。但是对于请求体json,类应该是

public class StateRequest : PublicRequest
{
public string generalComment{ get; set; }
public Dictionary<string, string> stateWithValue { get; set; }
}

或改变

public class StateRequest : PublicRequest
{
public string GlobalComment { get; set; }
public List<StateWithValue> StateWithValue { get; set; }
}
javascript

var stateWithValue = [];
for (const item in self.pricings()) {
var stateWithValueItem={};
stateWithValueItem.State =item;
stateWithValueItem.Value = self.pricings()[item]["Comment"];

stateWithValue.push(stateWithValueItem);

}

为了映射JSON:

{
generalComment: "test comment",
stateWithValue:
{
Delaware: "Value1",
California: "Value2",
Texas: "Value3"
}
}

你需要使用以下c#模型

public class StateRequest : PublicRequest
{
public string GeneralComment { get; set; }
public StateWithValue StateWithValue { get; set; }
}
public class StateWithValue
{
public string Dalaware { get; set; }
public string California { get; set; }
public string Texas { get; set; }
}

如果你想映射多个状态,可以考虑使用数组,比如:

{
generalComment: "test comment",
stateWithValue:
[
State: "Delaware", Value: "Value1",
State: "California", Value: "Value2",
State: "Texas", Value: "Value3"
]
}

但是你的模型需要更新,看起来像这样:

public class StateRequest : PublicRequest
{
public string GeneralComment { get; set; }
public List<StateWithValue> StatesWithValues { get; set; }
}

注意:在你的示例代码

中,general和Global有一个错别字

最新更新