2009-07-10 12 views
7

मेरे पास मेरे एएसपीनेट प्रोज में एक कक्षा है, मैं साइट पर कहीं से भी GetGlobalResourceObject (वह पृष्ठ खुलासा करता हूं) तक पहुंच प्राप्त करना चाहता हूं?मैं एक क्लास से GetGlobalResourceObject फ़ंक्शन कैसे एक्सेस करूं जो पृष्ठ नहीं है?

दूसरे शब्दों में मैं एक ऐसे वर्ग से वैश्विक संसाधनों तक पहुंच बनाना चाहता हूं जो एक पृष्ठ नहीं है जिस पर मुझे परवाह नहीं है।

उत्तर

20

उत्तर: हाँ, निम्नलिखित छद्म रूप में:

Resources.<The name of the resources file name>.<your resource key>; 

उदाहरण:

lblTitle.Text = Resources.MySettings.WebsiteTitle; 

Resources एक दृश्य-स्टूडियो ऑटो नाम स्थान कि इस परियोजना में सभी वैश्विक संसाधन वर्गों और रंगमंच की सामग्री को उजागर करता है उत्पन्न है ।

+0

हाय, मैं उपयोग कर सकते हैं (स्ट्रिंग) this.GetGlobalResourceObject ("संसाधन", "COL_Description") नीचे लेबल या बटन पाठ <एएसपी में की तरह के रूप में: लेबल आईडी = "lblTest" runat = "सर्वर" पाठ = '<% # (स्ट्रिंग) यह। GetGlobalResourceObject ("संसाधन", "COL_Description")%>'> – Singh

1

आप साइट में हैं, तो आप HttpContext की पहुंच है और उपयोग कर सकते हैं:

HttpContext.GetGlobalResourceObject("myResourceKey") 
+0

मुझे लगता है कि संसाधन उस ऑब्जेक्ट के ठीक होने के बजाय दृढ़ता से टाइप किए जाने के बाद बेहतर है। वैसे भी धन्यवाद – Shimmy

+0

हार्ड-कोडेड तारों का उपयोग करने की कोई आवश्यकता नहीं है। – Shimmy

+0

कोई हार्ड-कोडेड तारों से कैसे बच सकता है? – MrFox

14

आप का उपयोग करना चाहिए

HttpContext.GetGlobalResourceObject("myResourceKey") 

... क्योंकि कि जिस तरह से यह अभी भी जब एक कस्टम का उपयोग कर काम करेंगे ResourceProvider। संसाधन फ़ाइलों के लिए डिफ़ॉल्ट प्रकार-जनरेटर स्पष्ट रूप से Resx प्रदाता का उपयोग करता है और यदि आप database provider जैसे कुछ लागू करते हैं तो काम नहीं करेंगे।

+0

मैंने सोचा कि HttpContext.Current काम करेगा, लेकिन –

+0

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

+0

हाय, क्या मैं इस (स्ट्रिंग) का उपयोग कर सकता हूं। GGGGobalResourceObject ("संसाधन", "COL_Description") लेबल या बटन टेक्स्ट Singh

-3

मैं थोड़े संसाधन डिजाइनर से ले लिया,

ResourceManager temp = 
    new ResourceManager("Resources.<<resource name>>", 
    System.Reflection.Assembly.Load("App_GlobalResources")); 
+2

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

1

कुछ खेतों पर आप आज़माएं/कैच ब्लॉक के अंदर

HttpContext.GetGlobalResourceObject("myResourceKey") 

करने के लिए कॉल रैप करने के लिए की आवश्यकता होगी से अधिक इसे पाने के लिए "निर्दिष्ट संस्कृति या तटस्थ संस्कृति के लिए उपयुक्त कोई संसाधन नहीं मिला" त्रुटि।

+0

अरे, यह ठीक काम करता है, मैं निम्नलिखित कोड का उपयोग करता हूं: 'var resource = HttpContext.GetGlobalResourceObject (" संसाधनबेस नाम "," संसाधनकी "); स्ट्रिंग संदेश = संसाधन! = शून्य? संसाधन.ToString(): string.Empty; ' – DanielV