मुझे उम्मीद है कि मुझे यहां कुछ अविश्वसनीय रूप से स्पष्ट नहीं दिख रहा है, लेकिन क्या कोई कारण है कि मॉडल बाइंडर को हमेशा एक संग्रह मॉडल को बाध्य करने में परेशानी होती है जो संग्रह से प्राप्त होती है?एमवीसी 3 रेजर मॉडल बाइंडर और विरासत संग्रह
आइए कहें कि मैं एक पेजेड सूची दिखाना चाहता हूं और कॉम्बो बॉक्स प्रदर्शित करना चाहता हूं और इसके ऊपर बटन जोड़ना चाहता हूं (सरल सूचियों से निपटना)। शामिल वर्गों की तरह दिखेगा:
public class PagedList<T> : List<T>
{
public int TotalCount { get; set; }
}
और फिर एक दृश्य के मॉडल है कि तरह लग रहा है: तो ध्यान में रखते हुए
public class MyViewModel : PagedList<ConcreteModel>
{
public IEnumerable<ChildModel> List { get; set; }
public int? SelectedChildModelId { get; set; }
}
(उस्तरा):
@model MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(model => model.SelectedChildModelId, new SelectList(Model.List, "ChildModelId", "DisplayName"))
}
और नियंत्रक HttpPost कार्रवाई:
public ActionResult(MyViewModel viewModel)
{
...
}
उपरोक्त सी Ause ViewModel ActionResult में शून्य होने के लिए। क्या इसके लिए एक तार्किक स्पष्टीकरण है? जो मैं बता सकता हूं उससे संग्रह केवल उन मॉडलों को देखने के लिए विशिष्ट है जो संग्रह से प्राप्त होते हैं।
मुझे पता है कि मैं इसे कस्टम बांधने की मशीन के साथ प्राप्त कर सकता हूं लेकिन इसमें शामिल संपत्तियां प्राचीन प्रकार हैं और यहां तक कि कोई भी जेनरिक या विरासत भी नहीं है।
मैंने दृश्य मॉडल को पुनर्वित्त किया है ताकि संग्रह विरासत प्रकार गुणों के रूप में हो और यह समस्या को हल करे। हालांकि मैं अभी भी अपने सिर को खरोंच कर रहा हूं कि बाइंडर इस पर क्यों टूट जाता है। किसी भी रचनात्मक विचार की सराहना की।
मैंने अब तक किसी अन्य व्यवहार्य समाधान के बाद से विरासत में प्राप्त विरासत प्रकार के साथ एक संपत्ति घोषित करने वाले दृश्य मॉडल पर अटक गया है। इस दृष्टिकोण के साथ मेरे पास एकमात्र मुद्दा यह है कि यह ऑटोमैपर के लिए चीजों को जटिल बनाता है क्योंकि संपत्ति को अब स्वतः मैप किए जाने के बजाय स्पष्ट रूप से सेट किया जाना है। –
[स्टैक ओवरलो] पर जवाब (http://stackoverflow.com/questions/5762302/why-cant-my-views-model-bind-with-my-generic-viewmodel-which-implements-an-inte) दिखता है होनहार। हमम, कॉन्वेंट्स - –