के रूप में करने के लिए कारण बनता है मैं एक नियंत्रक तर्क है कि एक के लिए लग रहा है होगा है: सत्र मूल्यMVC 3 Session.Abandon() एक TempData सेट करने से पहले कहा जाता है [ "myvalue"] = "foo" अगले नियंत्रक TempData अशक्त
//checks value null etc.. for existing record in session memory.
Session["certnum"]
//is called to initiate a New Record that will be created.
Session.Abandon();
हालांकि प्रक्रियात्मक कोडिंग में है कि Session.Abandon();:
फिर नियंत्रक में मैं एक शर्त है करने के लिए जहां का फैसला किया था TempData ["myobject"] = "foo" के निर्माण से पहले आता है, और कोड के माध्यम से कदम उठाने पर तत्काल विंडो में TempData मेरा मूल्य दिखाता है और सब अच्छा लगता है। तब पर अन्य नियंत्रक को अनुप्रेषित:
return RedirectToAction("ChildInfo", "NewRecord");
यह ChildInfo विधि नहीं रह गया है TempData मूल्य है ... अब यह रिक्त है। सत्र Abandon विधि TempData मान सेट करने से पहले रास्ता कहा गया था, यह सुनिश्चित नहीं है कि यह एमवीसी सत्रों के साथ एक बग है, लेकिन यह मुझे शून्य समझ में आता है। यदि मैं एक नया लाइटवेट सत्र TempData बना रहा हूं, तो यह अगले नियंत्रक के लिए जारी रहना चाहिए। यदि मैं सत्र को हटा देता हूं। एबैंडन() विधि तब TempData मान पहले काम करता रहता है जैसा कि पहले किया गया था।
यहां महत्वपूर्ण बात यह है कि TempData सत्र पर निर्भर करता है। सत्र चला गया है इसलिए TempData चला गया है। –
@Adam हाँ मुझे एहसास है कि हालांकि मैं TempData मान बनाने से पहले सत्र .Abandon() को कॉल कर रहा हूं, मैं नियंत्रक की एक ही क्रियात्मक विधि में हूं, लेकिन फिर भी, यह मेरे लिए सिर्फ पागल लगता है। –
यह पागल क्यों होगा? आप tempdata के लिए आवश्यक ऑब्जेक्ट को रीसेट कर रहे हैं। यह कहने की तरह है कि "मैं टेबल में सभी पंक्तियों को हटा देता हूं, लेकिन मुझे समझ में नहीं आता कि अगले अनुरोध पर जिस पंक्ति पर मैं अनुरोध करने जा रहा हूं वह वहां नहीं है?" :) –