На самом деле я пытаюсь передать сложный объект в веб-API. Ниже мой код:

js

$("#btnFetch").live("click", function () {

var dualdata = { Code: "XXX", Module: "1" };
$.ajax({
    cache: false,
    url: fetchProfileUrl,
    type: 'GET',
    dataType: 'json',
    data: JSON.stringify(dualdata),
    contentType: "application/json;charset=utf-8",
    success: function (data) {                
        WriteResponse(data);
    },
    error: function (xmlHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});

});

веб-API

[HttpGet]
    public HttpResponseMessage FetchProfile([FromUri]JObject inputParam)
    {
        try
        {
            dynamic m = inputParam;
            var productCode = m.ProductCode.Value as string;
            var result = GetExecutiveProfileData(productCode);
            return Request.CreateResponse(HttpStatusCode.OK, result);
        }
        catch (Exception ex)
        {
            return HandleException(ex);
        }
    }

Я успешно добираюсь до метода API FetchProfile через вызов ajax во время отладки. Однако я не получаю значение, которое я передал через ajax в веб-api (т.е. код: «XXX» и модуль «1») в параметре inputParam . Я действительно не могу понять, чего не хватает с моей стороны.

Благодарность,

0
Running Rabbit 29 Фев 2016 в 12:43
FromUri указывает, что параметры должны выбираться из строки запроса URL-адреса.
 – 
Amit Kumar Ghosh
29 Фев 2016 в 12:46
Удалить JSON.stringify
 – 
shu
29 Фев 2016 в 12:59
Пробовали удалить JSON.stringify, но он ничего не делает. Я получаю объект, но он дает мне значение Считать как ноль
 – 
Running Rabbit
29 Фев 2016 в 13:02

1 ответ

Лучший ответ

Я нашел способ решить проблему, с которой столкнулся. Я создал класс запроса, содержащий два свойства «Код» и «Модуль», и назначил этот класс в качестве параметра для метода FetchProfile . Ниже приведены изменения, которые сработали правильно:

var dualdata = { Code: "XXX", Module: "1" };
$.ajax({
cache: false,
url: fetchProfileUrl,
type: 'GET',
dataType: 'json',
data: dualdata,
contentType: "application/json,
success: function (data) {                
    WriteResponse(data);
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
    alert(errorThrown);
}
});

Веб-API

[HttpGet]
public HttpResponseMessage FetchProfile([FromUri]APIRequestParams request)
{
    try
    {
        var result = GetProfileData(request.Code); 
        return Request.CreateResponse(HttpStatusCode.OK, result);
    }
    catch (Exception ex)
    {
        return HandleException(ex);
    }
}

Всем спасибо за ответы

0
Running Rabbit 2 Мар 2016 в 09:31