2015-03-05 10 views
5

Mam WebJob, który publikuje obiekt JSON do kontrolera w mojej witrynie MVC.Uzyskaj treść żądania POST w działaniu kontrolera MVC

Domyślny ModelBinder nie działa poprawnie w tym przypadku. Zamiast rozwiązywać problemy z segregatorem, jestem całkowicie zadowolony z obsługi serializacji.

W jaki sposób uzyskać treść żądania POST z kontrolera akcji, aby móc go podać na JSON.net?

Próbowałem używać StreamReader na Request.InputStream, ale otrzymuję pusty ciąg.

+2

Pokaż kod, który aktualnie jest ustawiony? "Zamiast rozwiązywać problemy z segregatorem ..." Nauczysz się dużo więcej w ten sposób i zaoszczędzisz sobie trochę kłopotów. Wszystko w formie jest dostępne przez: 'FormCollection [key]' obiekt –

+0

moje podejście polegało na utworzeniu segregatora modelu, który dziedziczy domyślny segregator modelu. Jeśli wykryjesz json, użyj swojego jsonowego spoiwa; jeśli nie, wykonaj akcję podstawową. Czy używasz C# lub VB na zapleczu? – ps2goat

+0

Więc udało mi się rozgryźć mój problem wiążący - moje POCO nie ujawniało publicznych ivars jako właściwości. Ale nadal jestem zainteresowany wiedzą, jak dostać się do surowego ciała POST z akademickiej ciekawości. –

Odpowiedz

7

Używam Angular.js $ http.Post(), aby wysłać obiekt Json do mojego wyniku działania, a powiązanie modelu uległo awarii. Użyłem poniższego kodu i udało mi się opublikować obiekt Json, a następnie użyć Newtonsoft do DeSerialization. Interesujące jest to, że Newtonsoft nie rzucił błędu na Deserializację, podczas gdy domyślne powiązanie modelu w MVC miało miejsce.

var req = Request.InputStream; 
var json = new StreamReader(req).ReadToEnd(); 
var result = JsonConvert.DeserializeObject<Model>(json); 
Powiązane problemy