2009-10-07 15 views
11

http://www.asp.net/learn/mvc/tutorial-39-cs.aspx"यह प्रॉपर्टी सेटर अप्रचलित है, क्योंकि इसका मान मॉडलमैटाडाटा से लिया गया है। अब मॉडल।"

हम अपने एएसपी.नेट एमवीसी ऐप में कुछ सत्यापन लागू करने के लिए उपरोक्त मार्गदर्शिका का उपयोग कर रहे हैं।

हमें निम्न त्रुटि This property setter is obsolete, because its value is derived from ModelMetadata.Model now. प्राप्त होती है जिसमें कोई लाइन नंबर नहीं है, यह एक नया संदेश बनाने के लिए सबमिट बटन दबाते समय बस विस्फोट होता है।

हम मेटाडाटा उदाहरण का उपयोग करने के लिए कर रहे हैं (ऊपर गाइड के नीचे देखें) क्योंकि वस्तुओं dbml

में उत्पन्न कर रहे हैं क्या जिसके कारण त्रुटि के बारे में कोई सुझाव?

उत्तर

28

जब आप कोई नया मॉडल बाइंडिंग कॉन्टेक्स्ट बनाते हैं तो आपको यह त्रुटि मिल जाएगी और फिर मॉडल प्रकार टाइप, एमवीसी 2 पूर्वावलोकन 2 या उच्चतर में सेट करने का प्रयास करें।

internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class 
    { 
     var mbc = new ModelBindingContext() 
     { 
      ModelName = prefix, 
      ModelState = modelState, 
      ModelType = typeof(T), 
      ValueProvider = collection.ToValueProvider() 
     }; 
     IModelBinder binder = new MyModelBinder(); 
     var cc = new ControllerContext(); 
     return binder.BindModel(cc, mbc) as T; 
    } 

जब मैं MVC 2 पूर्वावलोकन 2 के लिए अद्यतन, मैं एक ही त्रुटि के रूप में आप का वर्णन किया गया है: उदाहरण के लिए, MVC के पुराने संस्करणों में कस्टम मॉडल बांधने की मशीन के लिए एक इकाई परीक्षण में, मैं निम्नलिखित की तरह कोड था । ठीक इस के लिए इस कोड को बदलने के लिए किया गया था:

internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class 
    { 
     var mbc = new ModelBindingContext() 
     { 
      ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(T)), 
      ModelName = prefix, 
      ModelState = modelState, 
      ValueProvider = collection.ToValueProvider() 
     }; 
     IModelBinder binder = new MyModelBinder(); 
     var cc = new ControllerContext(); 
     return binder.BindModel(cc, mbc) as T; 
    } 

ध्यान दें कि मैं ModelType का काम निकाल दिया है, और ModelMetadata को एक काम से बदल दिया। विजुअल स्टूडियो आपको बताएगा कि कोड की कौन सी पंक्ति वास्तव में इस त्रुटि को फेंक रही है।

+0

मैं इसे आजमाने की कोशिश कर रहा हूं, धन्यवाद - मैं आपके बिना थोड़ी देर के लिए यहां रहा होता। हालांकि यह एक बग है? क्या यह कुछ है जो हम गलत कर रहे हैं? – LiamB

+0

बस को जोड़ने के लिए, मैं Dll (लाइन 47 DataAnnotationsModelBinder.cs) में त्रुटि 'var innerContext = नए ModelBindingContext() { मॉडल = propertyDescriptor.GetValue (bindingContext.Model), ModelName = fullPropertyKey, ModelState = पाया bindingContext.ModelState, ModelType = propertyDescriptor.PropertyType, ValueProvider = bindingContext.ValueProvider }; ' – LiamB

+0

आपका कोड completley भिन्न वस्तुओं का उपयोग करने लगता है? – LiamB

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