यदि मैं पृष्ठ को शुरू करने के लिए टेम्पपडेटा पास करने वाले किसी नए पृष्ठ पर रीडायरेक्ट करता हूं तो यह ठीक काम करता है, हालांकि यदि उपयोगकर्ता अपने ब्राउज़र में रीफ्रेश बटन दबाता है तो TempData अब उपलब्ध नहीं है। यह देखते हुए, क्या ऐसी कोई स्थिति है जहां TempData का विश्वसनीय रूप से उपयोग किया जा सकता है?
या उपयोगकर्ताओं को ताज़ा करने की समस्या को कम करने या कम करने का कोई तरीका?एएसपी.नेट एमवीसी ब्राउज़र रीफ्रेश करता है TempData बेकार बनाते हैं?
उत्तर
एमवीसी 1 में, हाँ, एक कुंजी स्टोर करने के बाद अगले अनुरोध के बाद अस्थायी डेटा खो जाता है।
एमवीसी 2 के साथ, हालांकि, इसका उपयोग करने के पहले प्रयास के बाद अस्थायी डेटा खो गया है।
आप हमेशा टेप डेटा डेटा हानि समस्या को हल करने के लिए, सत्र का उपयोग कर सकते हैं, जो TempData किसी भी तरह का उपयोग करता है।
MVC 2 बीटा रिलीज नोट्स से:
TempDataDictionary सुधार
TempDataDictionary वर्ग के व्यवहार पते के परिदृश्यों को थोड़ा बदल दिया गया है, जहां अस्थायी डेटा था या तो समय से पहले ही हटा दिया है या आवश्यक से अधिक लंबे समय तक जारी रहा। उदाहरण के लिए, उन मामलों में जहां temp डेटा उसी अनुरोध में पढ़ा गया था जिसमें सेट किया गया था, अगले अनुरोध के लिए अस्थायी डेटा जारी रहा था, भले ही इरादा इसे निकालना था। अन्य मामलों में, कई डेटा रीडायरेक्ट में अस्थायी डेटा जारी नहीं था।
इन परिदृश्यों को संबोधित करने के लिए, TempDataDictionary वर्ग बदल दिया गया जिससे सभी कुंजियों जीवित रहने के अनिश्चित काल तक कुंजी TempDataDictionary वस्तु से पढ़ा जाता है। Keep विधि को TempDataDictionary में इंगित करने के लिए जोड़ा गया था कि पढ़ने को पढ़ने के बाद को हटाया जाना चाहिए। RedirectToActionResult एक उदाहरण है जहां में Keep विधि को के लिए सभी अनुरोधों को बनाए रखने के लिए कॉल विधि कहा जाता है।
आप भी इन परिवर्तनों को देखने के MVC 2 स्रोत में सीधे देख सकते हैं:
MVC 1:
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
return value;
}
return null;
}
set {
_data[key] = value;
_modifiedKeys.Add(key);
}
}
MVC 2:
public object this[string key] {
get {
object value;
if (TryGetValue(key, out value)) {
_initialKeys.Remove(key);
return value;
}
return null;
}
set {
_data[key] = value;
_initialKeys.Add(key);
}
}
TempData दुकान के लिए विशेष रूप से मौजूद है केवल एक पेज लोड/एक्शन/रीडायरेक्ट के लिए डेटा। यदि आपको ताज़ा करने के बाद जारी रखने के लिए डेटा की आवश्यकता है तो आपको इसे व्यूडेटा संग्रह में रखना चाहिए, जब तक कि रीफ्रेश अनुरोध की सेवा करने वाली कार्रवाई वही है जैसा प्रारंभ में अनुरोध किया गया था (यानि रीडायरेक्ट से पहले व्यूडेटा मान जोड़ा नहीं गया था) ।
व्यूडेटा का उपयोग कर डेटा दृढ़ता के बारे में आपका बयान गलत है। दृश्य उत्पन्न होने पर व्यूडेटा का दायरा समाप्त होता है। ताज़ा करना बस कार्रवाई को फिर से चालू करता है और व्यूडेटा पुन: उत्पन्न होता है, कुछ भी नहीं रहता है। – Omar
शायद मैंने अपना अर्थ अस्पष्ट किया कि मैंने इसे कैसे समझाया। मैं यह कह रहा था कि रीफ्रेश के माध्यम से मूल्य को व्यूडेटा में फिर से जोड़ा जाएगा। –
आपकी समस्या का समाधान करने वाली एकमात्र विशेषताएं Cache
और Session
है।
ViewData
दृश्य उत्पन्न होने पर अनिवार्य रूप से 'मर जाता है'।
यदि आप जो कुछ हासिल करने की कोशिश कर रहे हैं उस पर अधिक जानकारी प्रदान कर सकते हैं, तो शायद एक और समाधान दिया जा सकता है, हालांकि, ऐसा लगता है कि Session
या Cache
का उपयोग करना आपके लिए सबसे अच्छा विकल्प है।
अंत में मैंने एक पूरी तरह से अलग दृष्टिकोण लिया और क्वेरी स्ट्रिंग पर डेटा पारित किया (यह केवल कुछ चर था लेकिन अभी भी सबसे सुरुचिपूर्ण समाधान नहीं है) – Myster
एमवीसी 1 में दी गई स्थिति के लिए एक कामकाज दूसरे नियंत्रक में TempData को फिर से असाइन करना होगा। बेशक यह सिस्टम में थोड़ा और समय के लिए डेटा बनी हुई है। लेकिन यह ताज़ा मुद्दे को हल करता है।
आप अपने नियंत्रक में
TempData.Keep("nameofthedata");
लिखना चाहिए, तो यह भी ताज़ा स्थितियों में है कि डेटा रखेंगे।
टेम्पडडाटा रीडायरेक्ट में उपयोग किया जाता है ताकि यदि आप पृष्ठ को रीफ्रेश कर रहे हैं जिसका अर्थ है कि आप सर्वर से अलग अनुरोध कर रहे हैं, इसलिए आपका डेटा खो गया है। इस डेटा को जारी रखने के लिए Tempdata.Keep ("KeyofTempdata") विधि को उस क्रिया में कॉल करें जिसमें आप रीडायरेक्ट कर रहे हैं। यदि आप डेटा का उपयोग Tempdata.Remove ("KeyofTempdata") को हटाना चाहते हैं।
- 1. एएसपी.नेट एमवीसी
- 2. एएसपी.नेट एमवीसी एचटीएमएल। टेक्स्टबॉक्स रीफ्रेश समस्या
- 3. एमवीसी 3 tempdata कंटेनर नुकसान
- 4. TempData कहां संग्रहीत किया जाता है?
- 5. ब्राउज़र रीफ्रेश कचरा संग्रह नहीं करता
- 6. ब्राउज़र रीफ्रेश व्यवहार
- 7. एएसपी.नेट एमवीसी अपवाद हैंडलिंग
- 8. एएसपी.नेट एमवीसी
- 9. एएसपी.नेट एमवीसी
- 10. समय-समय पर आंशिक दृश्य (एएसपी.नेट एमवीसी) रीफ्रेश करें
- 11. एएसपी.नेट एमवीसी - ड्रॉपडाउनलिस्ट बदलते समय आंशिक दृश्य रीफ्रेश करें
- 12. एएसपी.नेट एमवीसी
- 13. एएसपी.नेट एमवीसी: एक नियंत्रक विधि निष्पादित करने के बाद TempData को समाशोधन
- 14. आप एएसपी.नेट एमवीसी में बहु-भाग फ़ॉर्म कैसे संभालते हैं?
- 15. एएसपी.नेट एमवीसी
- 16. यह (बेकार?) जावास्क्रिप्ट कोड क्या करता है?
- 17. एएसपी.नेट एमवीसी - दृश्यों में डेटा पास करना
- 18. एएसपी.नेट एमवीसी कुकी TempDataProvider: कोई अनुभव?
- 19. उपयोग TempData: नाम 'TempData' वर्तमान संदर्भ में मौजूद नहीं है
- 20. एएसपी.नेट एमवीसी एएसपी.नेट में कैसे तारित है?
- 21. एएसपी.नेट एमवीसी सी # कोड
- 22. एएसपी.नेट एमवीसी स्टेटलेस है?
- 23. एएसपी.नेट एमवीसी में टेम्पपडाटा का दायरा और दृश्यता क्या है?
- 24. एएसपी.नेट एमवीसी
- 25. एएसपी.नेट एमवीसी
- 26. एएसपी.नेट एमवीसी/एमवीवीएम
- 27. एएसपी.नेट एमवीसी
- 28. एएसपी.नेट एमवीसी: FileResult
- 29. एएसपी.नेट एमवीसी
- 30. एएसपी.नेट एमवीसी
यह अब मूल्य तक पहुंचने पर आधारित है? मैं उस चेंजलॉग को याद किया। –
हाँ, क्या आप पहले पहुंच प्रयास पर TempData खोने के लिए एक संदर्भ प्रदान कर सकते हैं? – Omar
@Nathan Taylor @Baddie, आशा है कि मेरे संपादन और उद्धरण आपकी चिंताओं को हटा दें। – jfar