2013-04-16 29 views
25

RecordIem tek bir nesnesinde çalışan basit bir posta işlemine sahibim. Yapmak istediğim şey aynı işlemi yapmak, ancak aynı biçimi kullanarak bir dizi istek yayınlamaktır.MVC Web API'sı ile nesne dizisi gönderme

Örneğin

:

public HttpResponseMessage Post(RecordItem request) 
{ 
    var recordItems = _recorder.RecordItem(request); 
    return Request.CreateResponse(HttpStatusCode.OK, recordItems); 
} 

Ve Json gönderdiğimde:

{ 
    Id : "7UP24fVkGOxSjrcclghe_mP2-po", 
    System : 1, 
    Environment : "Production" 
} 

her şey çalışıyor. Aşağıda bu almaya

{ 
    Id : "7UP24fVkGOxSjrcclghe_mP2-po", 
    System : 1, 
    Environment : "Production" 
}, 
{ 
    Id : "ClPE188H4TeD2LbQPeV_EzCsKVM", 
    System : 1, 
    Environment : "Production", 
    Label : "RestTest1" 
}, 
{ 
    Id : "SAWTMJzm-_AFqoNw70-gLeUzB4k", 
    System : 1, 
    Environment : "Production" 
} 

Ve benzer bir yöntemi var:

public HttpResponseMessage Post(RecordItem[] request) 
{ 
    var recordItems = _recorder.RecordItems(request); 
    return Request.CreateResponse(HttpStatusCode.OK, recordItems); 
} 

Ben dizisinde [FromBody] ve [ModelBinding] özelliklerini ikisini de kullanarak çalıştı ve denedim ben benzer Json nakletmek istiyorum farklı türler (Liste, IList, IEnumerable) kullanarak ama boşuna. [FromBody] kullanıldığında, istek parametresi null ve [ModelBinding] kullanılırken liste boştur. İkisini de kullanmayı denedim ve bu da işe yaramıyor.

Müvekkilimde tek gönderiyi döngüye başvurmak zorunda kalmamayı tercih ederim.

Teşekkür

cevap

19

bir RecordItem[], isteğiniz vücutta JSON içeriği de bir dizi olmalıdır bekliyor. oldukça yakın olması ne

- verilerinizin etrafında kare parantez [] bir çift eklemeyi deneyin: sadece denemek olursa olsun boş bir dizi olsun hepsi için

[{ 
    Id : "7UP24fVkGOxSjrcclghe_mP2-po", 
    System : 1, 
    Environment : "Production" 
}, 
{ 
    Id : "ClPE188H4TeD2LbQPeV_EzCsKVM", 
    System : 1, 
    Environment : "Production", 
    Label : "RestTest1" 
}, 
{ 
    Id : "SAWTMJzm-_AFqoNw70-gLeUzB4k", 
    System : 1, 
    Environment : "Production" 
}] 
+0

Çalıştı. Teşekkürler :) – brimble2010

+1

Bu hala bir sayı 0 ile geliyor, nasıl/neden onun için çalıştı, ancak 2 yıl önce bu gibi görünüyor görünüyor ... –

1

Bu sizin json request parametre adı içerdiğini önemlidir. Diğer bir not: bunu bir dizi olarak göndermelisiniz.

Kişisel json şu şekilde görünecektir: senin Post yana

{ 
    "request": [ 
     { 
      "Id": "...", 
      "System": 1, 
      ... 
     }, 
     { ... } 
    ] 
} 
18

, şunu deneyin:

var request = $.ajax({ 
    dataType: "json", 
    url: "/api/users", 
    method: "POST", 
    data: { '': postData} 
}); 

Veriler, ham dizi yerine tek bir anonim nesne olmalıdır.

Bilgi bulunamadı here.

+0

Vay ve bu hala, sabit değildi, deli! GET'ler de çalışmıyor ... –

+0

Hala benim için bugün itibariyle bir sorun. Büyük düzeltme! – cscott530

+0

açısal $ http hizmeti için aynı işler – dier