json - 如何在 web api 中发布多个 json 对象?

标签 json linq asp.net-web-api entity-framework-6

我有一个 web-api Controller ,它接受单个 Json 对象 Post(当前使用 Postman 作为我的用户代理)。

这是我的发布方法:

    private AH_ODS_DB_Entities db = new AH_ODS_DB_Entities();    
    [ResponseType(typeof(Sales))]
            public HttpResponseMessage PostSales(Sales Sales, [FromUri] string auth)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        if (auth == "KDI")
                        {
                            Int64 rs = db.Sales_.Where(sl => sl.Serial == Sales.Serial).Count();
                            if (1 == rs)
                            {
                                return Request.CreateErrorResponse(HttpStatusCode.Conflict, " Duplicate Found!");
                            }
                            else
                            {
                                db.Sales_.Add(Sales);
                                db.SaveChanges();
                                return Request.CreateErrorResponse(HttpStatusCode.OK, "Added!");
                            }
                        }
                        else
                        {
                            return Request.CreateResponse(HttpStatusCode.Unauthorized, "Unauthorized Access!");
                        }
                    }
                    else
                    {


  return Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's wrong with the JSON model you sent me.");
                }
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
            }

        }

这是 Json:

{
  "ExtSerial": "AH0000002",
  "Date": "2015-03-01",
  "CustomerRefNbr": "JPM0001",
  "Description": "2015 FEBRUARY RENTAL  2015 FEBRUARY RENTAL",
  "Customer": "TRDE0065",
  "Amount": 17989.51,
  "AQ_Branch": "KDI",
  "AQ_COA": "4100503000",
  "LineSubAccount": "OPMOPN000",
  "LineTaxCategory": "JPMTAX",
  "LineQuantity": 1,
  "LineUnitPrice": 400000,
  "AQ_PostStatus": 1,
  "AQ_StatusDate": "2015-03-01",
  "DTS": "2015-03-01"
}

它工作得很好,但我想让我的 post 方法可以选择接受多个 Json 数据数组

类似这样的事情:

[{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}]

我尝试将我的销售模型参数作为列表<>,但它无法读取我的销售实体db.Sales_.Add(Sales);并且它无法获取我的销售中的表序列Int64 rs = db.Sales_.Where(sl => sl.Serial == Sales.Serial).Count();

中的实体

顺便说一句,我正在使用 EF6 和 LINQ。我真的需要你的帮助,我知道这是一个简单的问题,但我真的陷入困境。

最佳答案

您无法在 Web API POST 操作中接收多个 JSON 对象。这是因为它只能反序列化 POST 负载一次。

唯一的解决方案是发布(客户端)接收(Web 操作参数)一个具有其他对象作为属性的对象。

你的问题不太好理解,但是我会尽力给你一个更具体的答案。您需要定义一个像这样的类作为您的 Web api 参数:

public class SalesAndIds
{
    public Sales Sales { get; set; }
    public List<Ids> IdsList { get; set; }
    public class Ids
    {
        public int Id1 { get; set; }
        public int Id2 { get; set; }
        public int Id3 { get; set; }
    }
}

您从 JavaScript 发布的对象必须如下所示:

{
   Sales: { /* the sales object*/ },
   IdsList: [ /* the array with the ids list */  ]
}

关于json - 如何在 web api 中发布多个 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960024/

相关文章:

java - 如何在jsp中通过java arraylist填充google heatmap LatLng

使用多维数组的 JavaScript 多级排序

c# - 如何使用 Linq (C#) 解析 SVG 样式属性

javascript - ASP.NET Web API 中的表单

java - 获取 HTTP 错误 : 500 on get response Json Object from glassfish Jersey Rest server

javascript - 当用户无限滚动并删除以前数据的dom元素时,Angular js避免重复数据

asp.net-mvc - 使用 linq 更新列表中的所有属性

c# - Linq 进行非常低效的 Entity Framework 查询

Azure 请求的资源上不存在 'Access-Control-Allow-Origin' header

c# - 在NEST2上删除了INestSerializer