2015-03-05 19 views
5

Tôi có một WebJob đang đăng một đối tượng JSON lên một bộ điều khiển trong trang web MVC của tôi.Nhận nội dung yêu cầu POST trong Hành động điều khiển MVC

ModelBinder mặc định không hoạt động chính xác trong trường hợp này. Thay vì khắc phục sự cố chất kết dính, tôi hoàn toàn hạnh phúc khi tự xử lý việc tuần tự hóa.

Làm cách nào để lấy nội dung yêu cầu POST từ trình điều khiển của tôi Hành động để tôi có thể đưa nó vào JSON.net?

Tôi đã thử sử dụng StreamReader trên Request.InputStream, nhưng tôi nhận được một chuỗi rỗng.

+2

Hiển thị mã như hiện tại? "Thay vì khắc phục sự cố liên kết ..." Bạn sẽ học nhiều hơn theo cách đó và tiết kiệm cho mình một số rắc rối. Bất cứ điều gì trong một hình thức có thể truy cập thông qua sau đây: 'FormCollection [key]' đối tượng –

+0

cách tiếp cận của tôi là tạo ra một chất kết dính mô hình thừa hưởng chất kết dính mô hình mặc định. Nếu phát hiện json, hãy sử dụng chất kết dính json của bạn; nếu không, hãy thực hiện hành động cơ bản. Bạn đang sử dụng C# hoặc VB ở đầu sau? – ps2goat

+0

Vì vậy, tôi đã có thể tìm ra vấn đề liên quan đến vấn đề chất kết dính của tôi - POCO của tôi đã không phơi bày nó như là các thuộc tính công khai. Nhưng tôi vẫn quan tâm đến việc biết làm thế nào để có được cơ thể POST thô ra khỏi tò mò học thuật. –

Trả lời

7

Tôi đang sử dụng Angular.js $ http.Post() để gửi một đối tượng json đến actionresult của tôi và Mô hình ràng buộc không thành công. Tôi đã sử dụng đoạn mã dưới đây và có thể lấy đối tượng json được đăng và sau đó sử dụng Newtonsoft cho DeSerialization. Điều thú vị là Newtonsoft đã không ném một lỗi trên Deserialization trong khi mô hình mặc định ràng buộc trong MVC đã làm.

var req = Request.InputStream; 
var json = new StreamReader(req).ReadToEnd(); 
var result = JsonConvert.DeserializeObject<Model>(json); 
Các vấn đề liên quan