Web API 2获取操作,参数始终为null

时间:2014-09-22 15:05:55

标签: jquery asp.net-web-api

我确信这很简单。 我有一个控制器,其中有一个方法:

<RoutePrefix("Api/Stock")>
Public Class StockController
    Inherits ApiController

    <Route("{id}")>
    Public Function [Get](id As String, cred As credentials) As IHttpActionResult
        Try
            Using conn As New serviceInterface(serviceInterface.serverType.test)
                Dim stockItem = New stockItem() With {
                    .lotNo = id
                }

                Dim result = conn.webServicesAdvanced.stockHubAction(cred, stockItem)

                Return Ok(result.obj)
            End Using
        Catch ex As Exception
            Return InternalServerError(ex)
        End Try

        Return BadRequest()
    End Function
End Class

如您所见,我允许2个参数:

  • id(或lotnumber)
  • 和凭证对象

我的凭据对象存储为cookie中的字符串。现在,我尝试了很多东西来获得$ .get调用,但我一直将 cred 对象作为null。 以下是我的一个例子:

self.lotEnquiry = function () {
    var lot = self.lotNumber();

    if (lot.length == 10) { // Our lot numbers are 10 characters long
        var cred = { cred: $.parseJSON(dataModel.getUserObject()) };

        console.log(cred);

        $.get(stockUrl + "/" + lot, cred)
            .done(function (data) {
                console.log(data);
                //app.navigateToLotEnquiry();
            })
            .fail(app.handleError);
    }
};

,这仍显示为null。 我尝试使用指定的id和凭据构建对象:

var cred = {
    id: self.lotNumber,
    cred: $.parseJSON(dataModel.getUserObject())
};

或者甚至只是对象本身:

var cred = $.parseJSON(dataModel.getUserObject());

我甚至尝试过将其作为字符串提交。

无论我尝试什么,该对象始终为null(但如果我执行console.log,我可以看到所有内容)。

有人能指出原因吗?

1 个答案:

答案 0 :(得分:0)

这是因为我试图向 HttpGet 提供JSON对象。这是附加到URL。为了能够以JSON格式发送数据,我必须使用 HttpPost或HttpPut