2015-03-05 7 views
5

में एक POST अनुरोध का बॉडी प्राप्त करें मेरे पास एक वेबजोब है जो मेरी एमवीसी वेबसाइट में नियंत्रक को JSON ऑब्जेक्ट पोस्ट कर रहा है।एक एमवीसी कंट्रोलर एक्शन

डिफ़ॉल्ट मॉडलबिंडर इस उदाहरण में सही तरीके से काम नहीं कर रहा है। बाइंडर की समस्या निवारण के बजाय, मैं खुद को क्रमबद्ध करने के लिए पूरी तरह से खुश हूं।

मैं अपने नियंत्रक एक्शन से POST अनुरोध का शरीर कैसे प्राप्त करूं ताकि मैं इसे JSON.net में खिला सकूं?

मैंने Request.InputStream पर StreamReader का उपयोग करने का प्रयास किया है, लेकिन मुझे एक खाली स्ट्रिंग मिलती है।

+2

हमें वर्तमान में कोड के रूप में कोड दिखाएं? "बाइंडर की समस्या निवारण के बजाय ..." आप इस तरह से बहुत कुछ सीखेंगे, और खुद को कुछ परेशानी बचाएंगे। किसी भी रूप में किसी भी रूप में निम्नलिखित के माध्यम से सुलभ है: 'फॉर्मकोलेक्शन [कुंजी]' ऑब्जेक्ट –

+0

मेरा दृष्टिकोण एक मॉडल बाइंडर बनाना था जो डिफ़ॉल्ट मॉडल बाइंडर को प्राप्त करता है। यदि जेसन पता चला है, तो अपने जेसन बाइंडर का उपयोग करें; यदि नहीं, आधार कार्रवाई करें। क्या आप पिछली छोर पर सी # या वीबी का उपयोग कर रहे हैं? – ps2goat

+0

तो मैं अपनी बाइंडर समस्या का पता लगाने में सक्षम था - मेरे पीओसीओ ने अपने सार्वजनिक आइवरों को गुणों के रूप में बेनकाब नहीं किया था। लेकिन मुझे अभी भी यह जानने में दिलचस्पी है कि अकादमिक जिज्ञासा से कच्चे POST शरीर को कैसे प्राप्त किया जाए। –

उत्तर

7

मैं अपने actionresult पर एक जेसन ऑब्जेक्ट भेजने के लिए Angular.js $ http.Post() का उपयोग कर रहा हूं, और मॉडल बाध्यकारी विफल रहा था। मैंने नीचे दिए गए कोड का उपयोग किया और जेसन ऑब्जेक्ट पोस्ट करने में सक्षम था और फिर DeSerialization के लिए न्यूटॉन्सॉफ्ट का उपयोग करें। दिलचस्प बात यह है कि न्यूटनसॉफ्ट ने एमएसवी में बाध्यकारी डिफ़ॉल्ट मॉडल के दौरान Deserialization पर एक त्रुटि फेंक नहीं दिया था।

var req = Request.InputStream; 
var json = new StreamReader(req).ReadToEnd(); 
var result = JsonConvert.DeserializeObject<Model>(json); 
संबंधित मुद्दे