Sunday 15 July 2012

c# - MVC 4 converts a Dictionary to RouteValueDictionary -


मुझे एक कस्टम ऑब्जेक्ट मेमोबरिप्रॉइड में CreateUserAndAccount विधि के लिए एक डिक्शनरी ऑब्जेक्ट में डेटा से गुजरने में समस्याएं आ रही हैं I मेरे खाते नियंत्रक में, (पोस्ट) रजिस्टर विधि में निम्नलिखित हैं:

  शब्दकोष & lt; स्ट्रिंग, ऑब्जेक्ट & gt; UserInfo = नया शब्दकोश & lt; स्ट्रिंग, ऑब्जेक्ट & gt; (); UserInfo.Add ("ईमेल", मॉडल। ईमेल); UserInfo.Add ("पासवर्ड प्रश्न", मॉडल। पासवर्ड प्रश्न); UserInfo.Add ("पासवर्डएन्जर", मॉडल। पासवर्ड एन्डर); WebSecurity.CreateUserAndAccount (model.UserName, model.Password, userInfo, सत्य);   

जो मेरे उपयोगकर्ता प्रदाता है और मेरे कस्टम प्रदाता में सफलतापूर्वक CreateUserAndAccount विधि को कॉल करता है।

मेरे पास दो - शायद जुड़ा - समस्याएं

सबसे पहले, विधि हस्ताक्षर समान नहीं हैं, प्रदाता विधि इस तरह दिखती है:

  सार्वजनिक ओवरराइड स्ट्रिंग CreateUserAndAccount (स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग पासवर्ड, bool की आवश्यकता होती है पुष्टि, IDictionary & lt; स्ट्रिंग, ऑब्जेक्ट & gt; मान)   

बूलियन और शब्दकोश मापदंडों को बंद कर दिया जाता है, लेकिन विधि अभी भी पहुंच चुकी है। अगर मैं खाता / पंजीकरण विधि में कोड को इस से मेल खाने के लिए बदलता हूं तो मुझे यह मिलता है:

WebMatrix.WebData.WebSecurity.CreateUserAndAccount (स्ट्रिंग, स्ट्रिंग, ऑब्जेक्ट, बूल) के लिए सबसे अच्छा अतिभारित विधि मिलान ' कुछ अमान्य तर्क हैं।

मैं यह कैसे हो सकता है के रूप में उलझन में हूँ, मेरे सवाल का मूल रूप से धरती पर क्या हो रहा है?

दूसरे, जब कोड पहुंचता है CreateUserAndAccount, मैं इसे करने के लिए पास किए गए शब्दकोष वस्तु को एक रूटव्यूलेवेटिव में बदल दिया गया है, अन्य सभी पैरामीटर अपेक्षित रूप में प्रकट होते हैं।

मैं अपना शब्दकोश ऑब्जेक्ट कैसे वापस प्राप्त कर सकता हूं और ईमेल, पासवर्ड प्रश्न, और पासवर्ड एन्जोर वैल्यू ?

हस्ताक्षर के हस्ताक्षर से मेल नहीं खाती आप दूसरे के हस्ताक्षर का उपयोग करके एक विधि को कॉल नहीं कर सकते हैं, इसलिए आप कोशिश करते समय संकलक त्रुटि प्राप्त कर रहे हैं।

WebSecurity वर्ग पर विधि स्पष्ट रूप से < Code> propertyValues ​​ पैरामीटर को RouteValueDictionary में, क्योंकि यह किसी भी ऑब्जेक्ट को स्वीकार करने के लिए डिज़ाइन किया गया है, जबकि ExtendedMembershipProvider विधि को IDictionary & lt; string, object & gt; / कोड> पैरामीटर

उदाहरण के लिए, आप एक अनाम वस्तु में पास कर सकते हैं और कॉल अभी भी काम करेगी:

  WebSecurity.CreateUserAndAccount (model.UserName, model.Password, new {model ईमेल, मॉडल। पासवर्ड प्रश्न, मॉडल। पासवर्ड एन्डर}, सच);    

No comments:

Post a Comment