1

jqueryajax呼び出しを使用してWebAPI関数を呼び出す基本的なHTMLがあります。HTMLは、私がLISTとして受け取っている関数パラメーターにマップされるオブジェクトの配列を送信します。配列を削除して1つのオブジェクトのみを送信し、関数からリストも削除すると、コードが機能し、オブジェクトがパラメーターに正常に渡されます。

JavaScriptコードは以下の通りです

    function Call_Service () {
var input =
{
    STATUS: "MY New Status",
    CATEGORY: "My Value"
};

var input2 =
{
    STATUS: "MY New Status2",
    CATEGORY: "My Value2"
};

var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;

$.ajax({
    type: "POST",
    url: "http://localhost:34989/api/TMSPortal/objectPOC",
    data: input_array,
    success: function (response) {
        alert(response);
    }
});
}

C#WebAPIは以下のとおりです

        public Int64 objectPOC(List<TMS_STATUS> _Status)
    {

        Int64 retValu = 0;

        for (int i = 0; i < _Status.Count; i++)
        {
            retValu++;
        }

        return retValu;
    }
4

2 に答える 2

3

Web-API は現在、複数の複雑なパラメーターを許可していないことを知ったので、回避策に従って作業を完了しました。誰かがより良い解決策を持っているかどうか教えてください:

JObject を受け取るように Web-API 関数を変更し、そこから複合オブジェクトを抽出しました。Web API 関数は次のようになります。

        public Int64 objectPOC(JObject jsonWrapper)
    {

        dynamic jsonValues = jsonWrapper;
        JArray jsonInput = jsonValues.input;
        JArray jsonInput2 = jsonValues.input2;

        List<TMS_STATUS> _Status = jsonInput.ToObject<List<TMS_STATUS>>();
        List<TMS_STATUS> _Status2 = jsonInput2.ToObject<List<TMS_STATUS>>();


        Int64 retValu = 0;

        for (int i = 0; i < _Status.Count; i++)
        {
            retValu++;
        }

        return retValu;
    }

Ajax 呼び出しは次のとおりです。

    function Call_Service () {
var input =
{
    STATUS: "MY New Status",
    CATEGORY: "My Value"
};

var input2 =
{
    STATUS: "MY New Status2",
    CATEGORY: "My Value2"
};

var input_array = new Array();
input_array[0] = input;
input_array[1] = input2;

alert(input_array[0].STATUS);

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "http://localhost:34989/api/TMSPortal/objectPOC",
    dataType: "json",
    data: JSON.stringify({
        input: input_array,
        input2: input_array
    }),
    success: function (response) {
        alert(response);
    }
});
}
于 2013-02-26T13:33:00.733 に答える
0

複数の複合型パラメーターを送信するには、モデルを作成し、モデル内のプロパティとして公開します。Web APIでは、すぐに使用できる複合型入力パラメーターは1つだけです。

于 2013-02-25T17:56:51.350 に答える