5

के लिए बाध्य मैं एक OrderFormViewModel जो की तरहMVC मॉडल इंटरफेस

public class OrderFormViewModel 
{ 
    public IOrderDetails { get; set; } 
    public IDeliveryDetails { get; set; } 
    public IPaymentDetails { get; set; } 
    // ... etc 

    public SelectList DropDownOptions { get; set; } 
    // ... etc 

} 

कुछ यह मेरा बनाएं देखने के लिए, को जाता है लग रहा है बनाया है, जहां प्रत्येक खंड (यानी वितरण विवरण, भुगतान विवरण ... आदि) तब आंशिक दृश्य को पारित किया जाता है जो आवश्यक क्षेत्रों को कैप्चर करता है।

मैंने सोचा कि यह तब तक काफी साफ था जब तक कि मैं इसे चलाता था और महसूस किया कि एमवीसी मॉडल बांधने वाला यह नहीं जानता कि किसी भी इंटरफेस को तुरंत कैसे चालू किया जाए।

क्या इसे किसी भी तरह हल करने का कोई तरीका है?

मैं यूनिटी कंटेनर का उपयोग करके डी सीखने की भी कोशिश कर रहा हूं, इसलिए मैं अपने यूआई प्रोजेक्ट में किसी भी ठोस वर्ग के संदर्भ से बचने की कोशिश कर रहा हूं (मॉडल एक अलग परियोजना में है)।

उत्तर

5

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

1

सम्भावित समाधान यहाँ हो सकता है (के तहत इंटरफ़ेस बाइंडिंग फ़िल्टर बनाम देखें मॉडल बाइंडिंग): http://codetunnel.com/aspnet-mvc-model-binding-security/

+0

एक दिलचस्प ब्लॉग पोस्ट है कि। यह एक सुंदर विचार है, लेकिन निश्चित रूप से चालाक भी। – fearofawhackplanet

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