wake-up-neo.com

Übergeben eines JSON-Arrays an die MVC Web API über GET

Ich weiß, dass es unzählige Antworten für dieses Thema gibt, aber ich konnte keine Lösung für mein Problem finden ... Ich habe eine ASP.NET MVC-Web-API, die folgendermaßen aussieht:

    [HttpGet]
    public IList<Country> GetCountryList(List<long> idList)

Und ich habe versucht es so zu nennen:

    $.ajax({
        dataType: "json",
        data: JSON.stringify({idList: listOfIds}),            
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });

Die URL sieht dann so aus:

https://localhost/supertext/api/v1/util/CountryList?{%22idList%22:[46,14,62,83,120]}

Alternative:

    $.ajax({
        dataType: "json",
        data: {
            idList: JSON.stringify(listOfIds),
        }          
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });

URL:

https://localhost/supertext/api/v1/util/CountryList?idList=%5B46%2C14%2C62%2C83%2C120%5D

Beide Methoden funktionieren nicht.

Muss ich sie wirklich als Zeichenfolge senden und empfangen oder POST verwenden?

27
Remy

Nein, versuchen Sie nicht, JSON in einer GET-Anfrage zu senden. Verwenden Sie JSON mit anderen Verben, die body haben, wie POST und PUT. 

Machen Sie es auf die übliche Weise, indem Sie Ihren Aktionsparameter mit dem [FromUri]-Attribut versehen:

public IList<Country> GetCountryList([FromUri] List<long> idList)
{
    ...
}

und lösen Sie dann einfach die Anforderung AJAX aus:

$.ajax({
    url: 'api/v1/util/CountryList',
    type: 'GET',
    data: { idList: [1, 2, 3] },
    traditional: true,
    success: function (result) {
        console.log(JSON.stringify(result));
    }
});

Weitere Empfehlungen zum Lesen der Funktionsweise der Modellbindung im Web-API:

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1

54
Darin Dimitrov

** Es folgen zwei Parameter Enum und ObjSearch. **

var Enum = "ABCD";

var objSearch = [
              {"Name":"Navjot Angra","Age":23},
              {"Name":"Nav","Age":22}];

// das ist Ajax-Methode  

$ .ajax ({

   type: "GET",
   var GatwayUrl ='http//2937/' (//Your url)
   url: GatwayUrl + 'api/Certificate/GetDetail/?Enum=' + Enum +'+&objSearch='+ JSON.stringify(objSearch),
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (result) {
     if (result) {
        alert("Your Code");    
        }       }
});

// dieser Teil ist Web-API-Teil

[HttpGet]

public IHttpActionResult Fetch ([FromUri] string Enum, [FromUri] string objSearch) {

IHttpActionResult action = null; Return action;

}

0
Nav