2013-08-22 8 views
19

मैं अगले समस्या का सामना करना पड़ गया है:'System.Dynamic.DynamicObject' के लिए एक परिभाषा शामिल नहीं है 'PropertyName'

मैं के लिए कुछ डेटा पारित करने के लिए उपयोग करने के लिए ViewBag रन नेट MVC साइट कोशिश कर रहा हूँ मेरी राय। यहां वह तरीका है जहां मैं VeiwBag सेट करता हूं।

[HttpGet] 
[AllowAnonymous] 
public ActionResult Start() 
{ 
    ViewBag.BanReason = null; 
    int userId; 

    //Request with UserId, display ban reason if necessary 
    if (Request.Params["UserId"] != null && int.TryParse(Request.Params["UserId"], out userId)) 
    { 
     ViewBag.BanReason = CheckIfUserBanned(userId); 
    } 

    ViewBag.Users = MvcApplication.Users; 

    return View(); 
} 

जब मैं (उदाहरण के ViewBag.BanReason = बातिल के लिए;) ViewBag को मान असाइन मैं संदेश

'System.Dynamic.DynamicObject' के साथ RuntimeBinderException मिल गया है एक शामिल नहीं है 'BanReason' के लिए परिभाषा।

मैं .NET 4.5 और स्थानीय आईआईएस सर्वर के साथ Visual Studio 2012 का उपयोग कर रहा हूं .NET 4.0 के साथ ApplicationPool के साथ। उसी कॉन्फ़िगरेशन वाले दूसरे कंप्यूटर पर सभी अच्छी तरह से काम करते हैं और कोई अपवाद नहीं फेंक दिया जाता है।

कृपया व्यूडाटा [""] जैसी अन्य तकनीकों का उपयोग करने और एक अलग मॉडल बनाने की सलाह न दें, मैं कोड को बदलना नहीं चाहता जो अन्य मशीन पर अच्छी तरह से काम करता है।

मुझे लगता है कि यह मिस-कॉन्फ़िगरेशन समस्या है। किसी भी अनुमान की सराहना की जाएगी। धन्यवाद

+0

जहां ViewBag.BanReason' – Satpal

+0

यह Start.cshtml @if में उपयोग कर रहा है (ViewBag.BanReason उपयोग कर रहे हैं 'हमें कोड दिखाते हैं!= शून्य) { <स्क्रिप्ट प्रकार = "टेक्स्ट/जावास्क्रिप्ट"> शोएररपैनल ("@ व्यूबैग.बैनरियसन"); } – Groove

+1

क्या आप एक स्टैक ट्रेस पोस्ट कर सकते हैं? – Slavo

उत्तर

3

मेरा मानना ​​है कि यह एक और stackoverflow जवाब से आपकी समस्या है:

हम आपकी टिप्पणियों से देख सकते हैं, तो आप एक और नियंत्रक में ViewBag.Message की स्थापना कर रहे हैं। व्यूबैग केवल उस दृश्य के लिए डेटा के लिए है जो दृश्य की सेवा करने वाले नियंत्रक द्वारा निर्धारित किया गया था।

यदि आपको इसे किसी अन्य नियंत्रक से भेजने की आवश्यकता है, तो आपको अपनी क्रिया विधि में पैरामीटर का उपयोग करना चाहिए, फिर आप ViewBag.Message को पास पैरामीटर में सेट कर सकते हैं।

ViewBag RuntimeBinderException (MVC 4, ASPX)

+0

मैंने कोशिश की है और यह मदद नहीं करता है। अभी भी एक ही त्रुटि मिली है। – Groove

+0

आपको अभी भी एक ही अपवाद मिलता है? –

+0

हां, मैं अभी भी इसे प्राप्त कर रहा हूं। – Groove

16

अपने कोड ठीक है, ViewBag एक गतिशील गुण हो रही है, और क्रम में सभी गुण सौंपा जा रहा है।

यह अपवाद एक सामान्य सीएलआर अपवाद है .. निम्नलिखित चरणों को करने का प्रयास करें, यह उम्मीद है कि मैं काम करूंगा। ओपन दृश्य स्टूडियो

  • डीबग -> अपवाद -> (सही का निशान हटाएँ) साझा भाषा क्रम अपवाद

अगर अभी भी समस्या occures

  • उपकरण -> विकल्प -> डिबगिंग (विस्तृत करें) -> सामान्य -> ​​(चेक) बस मेरा कोड सक्षम करें

उम्मीद है कि यह मदद करता है, यह मेरे लिए काम कर रहा है

Click Here for Detailed Images

+2

मुझे लगता है कि यहां मूल समस्या यह है कि डायनामिक ऑब्जेक्ट एक/अन्य की तरह कोशिश/पकड़ का उपयोग कर रहा है, जो प्रदर्शन के लिए स्केल नहीं करता है, यह आपके सीपीयू को विशेष रूप से लूप में नष्ट कर देगा। –

+0

@ केली एल्टन मैं सहमत हूं। सीएलआर में "अपेक्षित" अपवादों पर आंतरिक रूप से भरोसा करने की आदत है। यह एक बहुत ही चिंताजनक डिजाइन अभ्यास है और जब आप अन्य कारणों से "जस्ट माई कोड" सक्षम नहीं कर सकते तो एक प्रमुख पिटा डीबगिंग कर देता है। – Dan

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