एएसपी.नेट एमवीसी 2 में, TempDataDictionary
में किसी प्रविष्टि का जीवनकाल केवल एक HTTP अनुरोध था।TempData कार्यान्वयन में परिवर्तन - परिवर्तन के कारण
जिसका अनुवाद एक अनुरोध में रीडायरेक्ट करने, रीडायरेक्ट करने और लाइन के दूसरे छोर पर एक ही आइटम तक पहुंचने के लिए किया गया है। इसके बाद प्रविष्टि अब उपलब्ध नहीं होगी, इस पर ध्यान दिए बिना कि क्या आप लाइन के बाद के अंत में शब्दकोश के मूल्य को पढ़ते हैं या नहीं।
एएसपी.नेट एमवीसी 3 (मुझे विश्वास है) के बाद से, इस कार्यान्वयन विस्तार में काफी बदलाव आया है।
TempDataDictionary
में प्रविष्टियां अब पढ़ने के बाद ही हटा दी गई हैं।
MVC 4
public object this[string key]
{
get
{
object obj;
if (!this.TryGetValue(key, out obj))
return (object) null;
this._initialKeys.Remove(key);
return obj;
}
}
और
public bool TryGetValue(string key, out object value)
{
this._initialKeys.Remove(key);
return this._data.TryGetValue(key, out value);
}
MVC 2:
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
return value;
}
return null;
}
और
public bool TryGetValue(string key, out object value) {
return _data.TryGetValue(key, out value);
}
चूंकि अधिकांश लोग एक अनुरोध में TempData
संग्रह में आइटम डालते हैं और तत्काल अगले अनुरोध में तुरंत उन्हें वापस पढ़ते हैं, कार्यक्षमता आश्चर्यजनक रूप से वही दिखाई देती है।
परिदृश्यों में जहां यह एक स्थान पर रीडायरेक्ट होने पर TempData
प्रविष्टि को पढ़ने की इच्छा नहीं है, और अन्य संसाधनों का अनुरोध करने और वापस नेविगेट करने पर इसे हटाने की उम्मीद है, तो इस परिवर्तन का काफी असर पड़ता है।
अब एक http अनुरोध के लिए प्रविष्टि उपलब्ध नहीं है लेकिन कई HTTP अनुरोधों पर उपलब्ध है, चाहे वह केवल एक ही शब्दकोश में उपलब्ध हो।
मैं इस प्रत्यारोपण परिवर्तन के बारे में अधिक जानना चाहता हूं, परिवर्तन के कारण क्या थे, क्या यह केवल कई रीडायरेक्टों को पूरा करने के लिए था या क्या गहन लाभ हैं?
उस के माध्यमिक, मुझे यह जानने के लिए उत्सुकता है कि क्या इसमें कुछ भी बनाया गया है, जो डेटा के एकल HTTP अनुरोध साझा करने के लिए कैटर करता है उसी तरह से TempData
को पूरा करने के लिए उपयोग किया जाता है?
क्यों एमवीसी 2 'टेम्पडडाटा' को अपने कार्यान्वयन में कॉपी नहीं करें? –
हम मूल रूप से है। –