2012-06-08 14 views
8

मैंने एमवीसी 4 बीटा से आरसी और नवीनतम ऑटोफैक में अपग्रेड किया। निम्नलिखित क्रिया ठीक से बाध्यकारी थी, लेकिन अब दोनों पैरामीटर शून्य हैं। मैं देख रहा हूँ कि वे formatters और इस तरह के बारे में चीजें बदल लेकिन मुझे यकीन है कि क्या मेरी समस्या का कारण नहीं कर रहा हूँएमवीसी 4 आरसी वेबएपी पैरामीटर बाइंडिंग

[HttpPost]  
RedirectModel MyAction(string value1, string value1) 

अनुरोध

Method: POST 
Accept: application/json 
URL: api/controller/myaction 
BODY: {"value1":"1000", "value2":"foo"} 

उत्तर

8

वास्तव में सुनिश्चित नहीं हैं कि क्यों बीटा से परिवर्तन, लेकिन मैं इसे बनाने के लिए कर रहा था

रूप

[HttpPost]  
RedirectModel MyAction(MyActionDTO dto) 

और MyActionDTO को परिभाषित: करने के लिए कार्रवाई हस्ताक्षर बदलकर काम 210

यह दो स्ट्रिंग पैरामीटर का उपयोग करके कई बॉडी पैरामीटर से जुड़ने में सक्षम नहीं होने के बारे में अपवाद फेंक रहा था। मुझे लगता है कि डीटीओ ऑब्जेक्ट का उपयोग करके आप AJAX कॉल (एक JSON ऑब्जेक्ट) में जो भेज रहे हैं, उससे अधिक बारीकी से प्रतिनिधित्व करता है।

+2

[FromBody] जोड़ना पैरामीटर किसी भी प्रभाव पड़ रहा नहीं था, मानकों अभी भी रिक्त थे। – Thad

+0

ठीक है आप हैं। मैंने अपना जवाब अपडेट किया ... –

+0

यह काम करता है, लेकिन मैं उम्मीद कर रहा था कि इसे बदलना न पड़े। हमारे पास कुछ कॉल हैं जिनमें शरीर में एक स्ट्रिंग है। मुझे यकीन नहीं है कि क्वेरी स्ट्रिंग पर एक भी आदिम प्रकार क्यों होना आवश्यक है। – Thad

15

आप एक डीटीओ वस्तु का उपयोग कर से बचने के लिए चाहते हैं, तो इस कोशिश:

[HttpPost]  
RedirectModel MyAction(dynamic value1, dynamic value2) { 
    string sValue1 = value1; 
    string sValue2 = value2; 
+2

आप एक नायक हैं। यह मेरे बहुत ही विशिष्ट मामले में एकमात्र व्यवहार्य समाधान है। मुझे विश्वास नहीं है कि मैंने इससे पहले नहीं सोचा था। काश मैं आपको अतिरिक्त अपवॉट दे सकता हूं। चीयर्स। – samuelesque

+0

खुशी मैं – mhu

+0

मदद कर सकता हूं धन्यवाद। यह मेरे लिए काम किया। –

संबंधित मुद्दे