2012-03-06 16 views
5

के साथ काम नहीं करता है मैं नई वेबएपी का उपयोग कर रहा हूं जो एमवीसी 4 बीटा का हिस्सा है।एमवीसी 4 वेबपी में deserialization/मॉडल बाध्यकारी arrays

public class Voucher 
{ 
    public string Id { get; set; } 
    public string TableId { get; set; } 
    public Product[] Products { get; set; } 
} 

मेरे नियंत्रक इस तरह दिखता है:

public class VouchersController : ApiController 
{ 
    public Voucher PostVoucher(Voucher voucher) 
    { 
      //.... 
    } 
} 

ग्राहक पक्ष पर मैं एक XmlSerializer का उपयोग कर डेटा को क्रमानुसार मैं निम्नलिखित वर्ग की है। आउटपुट अपेक्षित दिखता है और Products सरणी क्रमबद्ध है। यदि मैं डेटा पोस्ट करता हूं और PostVoucher विधि के अंदर ब्रेक पॉइंट डालता हूं, तो मुझे Id और TableId के लिए डेटा मिलता है, लेकिन Productsnull है। कोई संकेत जो मैं गलत कर सकता हूं?

+0

बस एक सवाल है, क्या आपने दोनों कक्षाओं (वाउचर और उत्पाद) में सीरियलज़ेबल विशेषता को जोड़ा है? –

+2

आपको '[Serializable]' विशेषता की आवश्यकता नहीं है, बिना किसी विशेषताओं के वर्ग (यानी, पीओसीओ) ठीक काम करते हैं। – carlosfigueira

उत्तर

6

एएसपी.नेट वेब एपीआई बीटा में जटिल प्रकारों और एक्सएमएल के मॉडल बाध्यकारी/deserialization के साथ एक मुद्दा है। इस समस्या को हल करने का एक तरीका मॉडल बाध्यकारी "अक्षम" करना है, और इस क्रिया के लिए "deserialization पथ" का चयन करें। http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/27/disabling-model-binding-on-asp-net-web-apis-beta.aspx पर पोस्ट दिखाता है कि यह कैसे करें।

ध्यान दें कि यह बीटा के लिए एक ज्ञात मुद्दा है, और अगले (आरसी) रिलीज में तय किया जाएगा।

+0

इसके लिए धन्यवाद। मैं काम करने की कोशिश कर रहा था कि मेरी कार्रवाई जेएसओएन को स्वीकार करने में खुश क्यों हुई लेकिन एक्सएमएल को निराश करने में असफल रहा। – Nick