【问题标题】:MVC C# Populate nested objects AJAX JSON JQueryMVC C# 填充嵌套对象 AJAX JSON JQuery
【发布时间】:2018-11-12 19:44:54
【问题描述】:

当我使用 AJAX JQuery 发送 Json 时,我无法填充嵌套对象。

具体来说,我无法填充 LineItems。

LineItems 是不同类型对象的列表:可以是网站或广告系列,因此在我的服务器端,我创建了两个继承自通用产品类的类(网站/广告系列)。

json 格式是客户端通过邮件发送给我的格式,所以我想弄清楚如何将我的 c# 对象与我收到的 json 自动绑定(或不绑定)。

在控制器中,到目前为止的结果是 Order 填充了他自己的属性,但 LineItems 的分支始终是没有值的产品。

非常感谢!

模型

public class Order
{
    public string Partner { get; set; }
    public string OrderID { get; set; }

    public List<LineItems> LineItems { get; set; }
}

public class LineItems
{
    public Product Product = new Product();
}

public class Product
{
    public string ID { get; set; }
    public string Category { get; set; }
}

public class Website : Product
{
    public WebsiteDetails WebsiteDetails = new WebsiteDetails();
}

public class WebsiteA : Website
{
    public string ContactName { get; set; }
}

public class PaidSearch : Product
{
    public Campaign Campaign = new Campaign();
}

public class Campaign
{
    public string CampaignName { get; set; }
}

public class WebsiteDetails
{
    public string TemplateId { get; set; }
    public string WebsiteBusinessName { get; set; }
}

控制器

[HttpPost("rec-order")]
public JsonResult Post([FromForm]Order order)
{
    return Json(new { order = order });
}

JQUERY

jQuery.ajax({
    url: "/api/rec-order",
    type: "POST",
    dataType: 'json',
    data: {
        "Partner": "TNT",
        "OrderID": "999888777",
        "LineItems": [
            {
                "ID": 1,
                "Category": "First Category Website",
                "WebsiteDetails": {
                    "TemplateId": "12",
                    "WebsiteBusinessName": "Lorem Ipsum",
                }
            },
            {
                "ID": 1,
                "Category": "First Category Campaign",
                "Campaign": {
                    "CampaignName": "Lorem Ipsum",
                }
            }
        ]
    },
    success: function (data) {
        console.log(data);
    }
});

【问题讨论】:

    标签: c# jquery json post model-view-controller


    【解决方案1】:

    您的 LineItems 类需要包含 int ID,string Category ... 属性,而不是对象。

    你可以试试这个来代替你当前的模型

    public class WebsiteDetails
    {
        public string TemplateId { get; set; }
        public string WebsiteBusinessName { get; set; }
    }
    
    public class Campaign
    {
        public string CampaignName { get; set; }
    }
    
    public class LineItem
    {
        public int ID { get; set; }
        public string Category { get; set; }
        public WebsiteDetails WebsiteDetails { get; set; }
        public Campaign Campaign { get; set; }
    }
    
    public class Order
    {
        public string Partner { get; set; }
        public string OrderID { get; set; }
        public List<LineItem> LineItems { get; set; }
    }
    

    【讨论】:

    • @gmaccario 很高兴为您提供帮助 :)
    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2015-09-16
    • 2014-07-28
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多