【问题标题】:Web API Post get related data from json.stringifyWeb API Post 从 json.stringify 获取相关数据
【发布时间】:2017-08-31 15:39:12
【问题描述】:

我有一个带有按钮的 html 页面。以下是重要的功能:

function updateClick() {
    SOP10100 = new Object();
    SOP10100.CUSTNMBR = "5000";
    SOP10100.SHIPMTHD = "FedEX";
    SOP10100.SOP10200 = [{ itemnmbr: "120604", quantity: 3, unitprice: .98, uofm: "ROLL" }, { itemnmbr: "120604", quantity: 1, unitprice: 4.98, uofm: "6 ROLL" }, { itemnmbr: "120604", quantity: 2, unitprice: 10.98, uofm: "12 ROLL" }]

    salesOrderCreate(SOP10100);
}

function salesOrderCreate(sOP10100) {
   $.ajax({
        url: '/api/SOP10100',
        type: 'POST',
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(sOP10100),
        success: function (data) {
            salesOrderSuccess(data);
        },
        error: function (request, message, error) {
            handleException(request, message, error);
        }
    });
}

这里是处理点击的控制器:

' POST: api/SOP10100
<ResponseType(GetType(SOP10100))>
Function PostSOP10100(ByVal sOP10100 As SOP10100) As IHttpActionResult
    If Not ModelState.IsValid Then
        Return BadRequest(ModelState)
    End If

    Try

'创建文档标题 Dim otaSOPHdrIvcInsert 作为新的序列化.taSopHdrIvcInsert

        'populate the header
        With otaSOPHdrIvcInsert
            .DOCID = "EQ SALE ORD"
            .BACHNUMB = "webOrder"
            .LOCNCODE = "WAREHOUSE"
            .DOCDATE = DateString 'Today
            .CUSTNMBR = sOP10100.CUSTNMBR
            .SHIPMTHD = sOP10100.SHIPMTHD
            .REFRENCE = sOP10100.REFRENCE
    End With

这就是我卡住的地方。我需要遍历 SOP10200(这是订单行),并为每个人做这样的事情:

Dim otaSOPLineIvcInsert As New Serialization.taSopLineIvcInsert_ItemsTaSopLineIvcInsert

With otaSOPLineIvcInsert
    .SOPNUMBE = strSopNumber
    .SOPTYPE = 2
    .DOCDATE = DateString
    .ITEMNMBR = sOP10100.SOP10200.itemnmbr
End With

但我似乎无法在代码中访问itemnmbr。我在调试时可以看到它,所以我知道它在那里。

如果这不是来自 API 而是来自 linq 查询,我会做一个查询,然后

For Each IV00101 In query

对此的任何帮助将不胜感激。我知道代码在 VB 中,但问题也适用于 C#。

【问题讨论】:

  • 对于 sOP10100.SOP10200 中的每个 IV00101 ?
  • 天哪,成功了。我会发誓我尝试过,但我想不会。谢谢。
  • 没问题。我已经添加了一个答案,以便可以完成问题。

标签: .net json vb.net web model-binding


【解决方案1】:

您需要访问集合属性 SOP10200 才能访问它的项目:

 For Each IV00101 IN sOP10100.SOP10200

      'Do Work

 Next

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 2012-10-24
    • 2018-01-07
    • 2020-04-02
    • 2014-10-19
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多