मैं कस्टम मॉडलबिंडर्स का उपयोग कर नया हूं, मैं चारों ओर देख रहा हूं और मुझे इस विशिष्ट मामले से संबंधित कोई पोस्ट नहीं मिल सका।एमवीसी 3.0 मॉडलबिन्डर बाइंडिंग कॉन्टेक्स्ट। वैल्यूप्रोवाइडर। गेटवैल्यू (कुंजी) संग्रह में बाध्यकारी होने पर शून्य लौटाता है
मैं एक इकाई की तरह:
public class DynamicData
{
public IList<DynamicDataItem> DynamicDataItems{get;set;}
}
देखें में मैं बाँध इसे पसंद इस प्रकार है:
@Html.EditorFor(model => model.DynamicDataItems);
मैं कक्षा DynamicDataItems में विशेष जानकारी नहीं है, कि मैं एक में प्राप्त करना चाहते हैं विशिष्ट तरीका, इसलिए मैंने अपना खुद का मॉडल बाइंडर बनाया।
public class DynamicDataItemBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
var key = bindingContext.ModelName;
var valueProviderResult = bindingContext.ValueProvider
.GetValue(key);
if (valueProviderResult == null ||
string.IsNullOrEmpty(valueProviderResult
.AttemptedValue))
{
return null;
}
//Here retrieve my own Information
return DynamicDataItem;
}
}
bindingContext.ModelName शामिल है "DynamicDataItem [0]"।
यदि मैं बाध्यकारी कॉन्टेक्स्ट करता हूं। वैल्यूप्रोवाइडर। कॉन्टेन्सफ्रिक्स (कुंजी), यह सच हो जाता है, लेकिन जब मैं GetValue (कुंजी) करता हूं, तो यह शून्य हो जाता है। यदि मैं मानता हूं कि ValueProvider में क्या है, तो मुझे लगता है कि "डायनामिकडेटाइटम [0]" में उनकी कुंजी शुरू होने वाली कई चीज़ें हैं। वर्तमान में बाध्य किए जा रहे आइटम के लिए सभी फ़ील्ड से जानकारी पुनर्प्राप्त करने के लिए मुझे कैसे समझा जाता है ("डायनामिकडेटाइटम [0]")? क्या मुझे उन्हें एक-एक करके पुनर्प्राप्त करना चाहिए? इस तरह:
var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
मैं बहुत किसी भी मार्गदर्शन तुम मुझे इस के साथ दे सकते हैं की सराहना करेंगे।
मैं आपको सुझाव देता हूं कि [इस लिंक] [1] पर जाएं। मुझे लगता है कि यह आपकी समस्या के लिए उपयोगी है। [1]: http://stackoverflow.com/a/25902872/1817640 – Jahan