2008-09-25 13 views
7

मैं इसे दो अलग-अलग तरीकों से आजमा रहा हूं, लेकिन यह किसी कारण से काम नहीं कर रहा है। क्या यह भी संभव है?क्या उपयोगकर्ता नियंत्रण को कैश करते समय आप एकाधिक VaryByCustom पैरामीटर का उपयोग कर सकते हैं?

उत्तर

12

हां। अर्धविरामों द्वारा अपनी घोषणा में उन्हें अलग करें।

+0

अर्धविराम से उन्हें अलग कैसे किया जाता है अल्पविराम, अवधि या किसी अन्य विशेष चरित्र से अलग है? – ozgur

+1

डाउनवॉटेड, क्योंकि अर्धविराम का उपयोग करने से आपको कई पैरामीटर के लिए समर्थन नहीं मिलेगा। यदि आप इसे चाहते हैं, तो आपको इसे स्वयं लागू करना चाहिए। – Richard

+0

@ रिचर्ड से सहमत; यह _not_ स्वचालित समर्थन देता है। – PMah

4

यदि आप Global.asax.cs फ़ाइल में GetVaryByCustomString() को ओवरराइड कर रहे हैं, तो आप उन मानों की अर्धविराम सीमांकित सूची में पास कर सकते हैं जिन्हें आपको पार्स करने की आवश्यकता है।

एक अंतर्निहित मूल्य (ब्राउज़र) है जिसका उपयोग किया जाएगा यदि निर्दिष्ट विशेषता मौजूद नहीं है।

+3

तकनीकी रूप से, हालांकि, अगर कोई 'GetVaryByCustomString' को ओवरराइड कर रहा है, तो क्या कोई भी किसी प्रारूप में सीमा शुल्क की सूची पास नहीं कर सकता है, क्योंकि किसी को भी अपना खुद का पार्सिंग करना होगा? या क्या ओवरराइड कार्यान्वयन के अंदर 'बेस.गेटरीबैस्ट कस्टमस्ट्रिंग' को कॉल करने के लिए कोई फर्क नहीं पड़ता? – bzlm

+0

@bzlm 'base.GetVaryByCustomString' किसी स्ट्रिंग स्प्लिटिंग क्षमताओं को लागू नहीं करता है और केवल 'ब्राउज़र' मान के रूप में पारित होने पर ही कुछ करेगा। इसका मतलब है कि आप किसी भी चरित्र को अपने विभाजक के रूप में चुन सकते हैं। – Richard

+0

तकनीकी रूप से delimiter कोई फर्क नहीं पड़ता। हालांकि, माइक्रोसॉफ्ट अपने दस्तावेज में अर्धविराम का उपयोग करने की सिफारिश करता है। इसके अलावा, अर्धविराम VaryByParam के लिए स्वचालित रूप से समर्थित है और आमतौर पर एक कॉन्फ़्रेंस के साथ रहना बुद्धिमान है, अगर कोई परिभाषित किया गया है। –

0

आप अर्धविराम से अलग करके कई पैरामीटर का उपयोग कर सकते हैं, लेकिन आपको स्वयं को विभाजित करने के तर्क को लागू करना होगा। इसका मतलब है कि आप किसी भी चरित्र को अपने विभाजक के रूप में उपयोग कर सकते हैं, क्योंकि आपको इसे स्वयं पार्स करने की आवश्यकता है।

आप शायद अपने वैश्विक.एक्सएक्स में GetVaryByCustomString(HttpContext context, string custom) ओवरराइड कर रहे हैं। custom पैरामीटर कुछ भी आप VaryByCustom का उपयोग कर पास में शामिल होंगे, इस

<%@ OutputCache Duration="86400" VaryByParam="none" VaryByCustom="custom1;custom2" %> 

अतिरिक्त टिप्पणी की तरह: base.GetVaryByCustomString किसी भी स्ट्रिंग बंटवारे क्षमताओं को लागू नहीं करता है और जब browser एक मूल्य के रूप में पारित हो जाता है केवल कुछ करना होगा। अन्यथा यह null लौटाएगा।

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

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