मेरे पास एक एएसपी.नेट पृष्ठ है जिसमें दो div हैं। दोनों में खोज फ़ील्ड और उनमें से प्रत्येक के भीतर एक खोज बटन है। जब मैं पहली बार इस पृष्ठ पर आ जाता हूं, तो Div A में 'सर्चडिव' श्रेणी होती है जबकि Div B में 'SearchDivDisabled' है। ये वर्ग उपस्थिति को बदलते हैं ताकि उपयोगकर्ता जानता है कि वर्तमान में वे किस खोज प्रकार को सक्षम कर चुके हैं।'बैक' बटन का उपयोग होने पर डिव क्लास जारी नहीं है
जब डिव बी क्लिक किया जाता है, तो जावास्क्रिप्ट इसकी कक्षा को 'सर्चडिव' में बदलता है, और Div A को 'SearchDivDisabled' में बदल देता है। यह सब एक आकर्षण की तरह काम करता है। मेरी समस्या यह है कि जब कोई उपयोगकर्ता Div B में बदलता है, तो Div B के खोज बटन पर क्लिक करता है (जो स्पष्ट रूप से परिणाम पृष्ठ पर रीडायरेक्ट करता है), और उसके बाद ब्राउज़र के बैक बटन का उपयोग करता है। जब वे खोज पृष्ठ पर वापस आते हैं, तो Div A को फिर से सक्षम किया जाता है, और डिव बी अक्षम है, भले ही वे अंतिम रूप से Div B. का उपयोग करते हैं। खोज बटन ईवेंट हैंडलर में मैंने रीडायरेक्ट करने से पहले divs की क्लास विशेषता सेट की है, उम्मीद है कि यह अपडेट होगा सर्वर पर पृष्ठ, जब उपयोगकर्ता लौटाता है, तो उनका अंतिम-सक्षम Div अभी भी सक्षम हो जाएगा (इस पर ध्यान दिए बिना कि पृष्ठ को पहली बार किस बार देखा गया था)।
मेरा मानना है कि इसमें व्यूस्टेट शामिल है, लेकिन मुझे यकीन नहीं है कि कक्षा विशेषता क्यों सहेजी नहीं जाती है, जब उपयोगकर्ता पृष्ठ पर वापस आ जाता है तो इसे पुनर्स्थापित किया जाता है। क्या मैं यहां कुछ खो रहा हूं, या जिस व्यवहार को मैं चाहता हूं उसकी गारंटी देने का कुछ आसान तरीका है? धन्यवाद!
संपादित करें:
protected void RedirectToResults(int searchEnum, string resultPage)
{
ShowContainer(searchEnum);
Response.Redirect(resultPage + this.webParams.getAllVariablesString(null));
}
protected void ShowContainer(int searchContainerToShow)
{
if (searchContainerToShow < 0 || searchContainerToShow > SearchContainers.Count || SearchContainers.Count == 0)
return;
//disable all search panels
foreach (SearchContainer container in SearchContainers.Values)
{
container.searchDiv.Attributes.Add("class", "SearchDivDisabled");
}
//enable selected panel
SearchContainers[searchContainerToShow].searchDiv.Attributes.Add("class", "SearchDiv");
}
RedirectToResults()
enum चयनित खोज पैनल और परिणाम पृष्ठ यूआरएल का प्रतिनिधित्व करने के साथ वास्तविक बटन ईवेंट हैंडलर से कहा जाता है: यहाँ बटन ईवेंट हैंडलर कोड है। SearchContainers खोज div के लिए एक पूर्णांक मैपिंग एक शब्दकोश है। महत्वपूर्ण कोड अंतिम पंक्ति है, जहां मैं चयनित खोज कंटेनर को 'सक्रिय' खोज वर्ग के साथ अक्षम कर रहा हूं, जिसे अक्षम (जिसे मैं अन्य div (ओं) को असाइन करता हूं)
अतिरिक्त अद्यतन: मैं पिछले कुछ दिनों से इस मुद्दे से जूझ रहा हूं। मैं इन सबसे छुटकारा (Page_Load में) काम करने के लिए निम्नलिखित कोड प्राप्त करने में सक्षम था:
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
लेकिन यह वास्तव में सब कुछ के रूप में एक समाधान है, सही ढंग से कैश की गई हो जाता है कि खो दिया है, जो मुझे भी बदतर बंद जब से छोड़ देता है नहीं है मैंने शुरू किया। बाकी सब कुछ ठीक रहता है, यह केवल div की कक्षा है जो मुझे संघर्ष कर रही है।
संपादित करें: बस इसे किसी और के लिए अपडेट करना चाहता था जो इस पर आता है। जबकि मेरा मानना है कि ब्राउज़र की पोस्टबैक को मजबूर करने के लिए पेज की कैशबिलिटी सेट करने के साथ यहां एक समाधान है, मैं इसे सभी ब्राउज़रों के साथ 100% काम नहीं कर सका (मुख्य रूप से फ़ायरफ़ॉक्स मुझे फिट कर रहा था, जो एक दस्तावेज बग है)। मेरा मानना है कि कुकी समाधान काम करेगा, लेकिन मुझे लगा कि यह कुछ div की स्थिति को स्टोर करने की कोशिश करने के लिए आवश्यक से थोड़ा अधिक जटिल हो सकता है।
मैं जो कर रहा हूं वह div की कक्षा को इसके संबंधित रेडियो बटन की स्थिति में बांध रहा था (वहां div के बगल में रेडियो बटन हैं जो उपयोगकर्ताओं को खोज पैनलों को सक्षम करने का एक और दृश्य तरीका प्रदान करते हैं)। मैंने देखा कि बैक बटन का उपयोग होने पर इन रेडियो बटनों ने सही चेक किए गए मान को बरकरार रखा था, इसलिए मैं गारंटी दे सकता था कि वे सही div को सक्षम करने के लिए इंगित करेंगे। तो जावास्क्रिप्ट के अधिभार में मैं जांचता हूं कि कौन सा रेडियो बटन सक्षम है, और उसके बाद खोज div के वर्गों को तदनुसार समायोजित करें। यह एक बहुत बड़ा हैक है, लेकिन सभी ब्राउज़रों में 100% काम किया है, और केवल जावास्क्रिप्ट की लगभग 10 लाइनें ली हैं।
जैसा कि मैंने उपरोक्त उल्लेख किया है, 'खोज बटन ईवेंट हैंडलर में मैंने रीडायरेक्ट करने से पहले divs की क्लास विशेषता सेट की है, उम्मीद है कि यह सर्वर पर पेज अपडेट करेगा, इसलिए जब उपयोगकर्ता वापस आएगा, तो उनका अंतिम-सक्षम Div अभी भी होगा सक्षम 'तो मैं यह कर रहा हूँ।मैं मूल पोस्ट को कोड के साथ अपडेट कर दूंगा। – Kevin