无法使用FromBody属性将数据发布到Web api控制器操作

时间:2017-12-26 12:42:41

标签: c# json asp.net-core .net-core asp.net-core-mvc

客户端模型(类型脚本文件):

Maybe Pole

服务器端模型/类:我使用的是newtonsoft json。

如果我将Json属性值更改为typescript文件中的属性名称 该列值在UI上不可见。

export  interface IRecord {
    id: string
    amount: string,
    amountConst: string,
    amountLC: string,   
}

Web Api控制器:

public class Records
{
    [Key]
    public string ID { get; set; }
    [Column("Amount")]
    [JsonProperty("Amount")]
    public string Amount { get; set; }

    [Column("Amount Const $")]
    [JsonProperty("Amount Const $")]
    public string AmountConst { get; set; }

    [Column("Amount LC")]
    [JsonProperty("Amount LC")]
    public string AmountLC { get; set; }
}

服务器端我从客户端获得了确切的记录数 但是使用null属性值。

1 个答案:

答案 0 :(得分:0)

要使其工作,您应该更改发送客户端模型或服务器端绑定的方式。

如果指定[JsonProperty]属性,则JSON反序列化程序期望JSON属性名称与propertyName参数的值完全相同。

对于您的情况,您发送的模型应如下所示

[{
    "ID": "11",
    "Amount": "1",
    "Amount Const $": "1.0",
    "Amount LC": "aaa"
}]

接口IRecord无法使用,因为它无法绑定到服务器端模型。

因此,您有几种方法可以使其发挥作用:

  • 删除IRecord界面并发送具有如上所示结构的对象
  • 更改服务器端模型,以便两个模型'属性匹配
  • Records类型编写自定义模型绑定器(请check this)以处理您的情况