2010-02-26 11 views
6

से बाहरी संसाधनों तक कैसे पहुंचे मेरे वर्तमान समाधान में कई कक्षा पुस्तकालय और एक वेबसाइट शामिल है। मैं आवेदन को वैश्वीकरण करने की प्रक्रिया में हूं और मुझे एहसास हुआ कि मेरे संसाधनों को सभी परियोजनाओं द्वारा एक्सेस किया जाना चाहिए न केवल वेबसाइट बल्कि मेरे संसाधनों को App_GlobalResources फ़ोल्डर में रखकर काम नहीं किया।वेबसाइट एएसपीएक्स

मैंने अपने संसाधनों को एक कक्षा कक्षा पुस्तकालयों में जोड़ा और अब मैं यह पता लगाने की कोशिश कर रहा हूं कि संसाधनों तक पहुंचने का सबसे अच्छा तरीका मेरे मार्कअप से क्या है। जब मेरी संसाधनों App_GlobalResources फ़ोल्डर में थे मैं इस जैसे एक अभिव्यक्ति का उपयोग करके उन तक पहुँचने में सक्षम था:

<$ Resources: MyApp.Name %> for server controls 

या

<%=Resources.MyApp.Name %> for plain text 

क्या मेरी वेबसाइट aspx से मेरी संसाधन तक पहुँचने का सबसे अच्छा तरीका है फाइलें अब वे क्लास लाइब्रेरी डीएलएल में हैं?

आपकी मदद के लिए धन्यवाद!

+0

शायद एएसपीएक्स की परियोजना कक्षा पुस्तकालय परियोजना पर निर्भर होने के लिए सेट करें। यदि आप बस डीएलएल समेत हैं और क्लास लाइब्रेरी प्रोजेक्ट नहीं हैं, तो सुनिश्चित करें कि आपके पास आपकी परियोजना में डीएलएल का संदर्भ है। –

उत्तर

4

मुझे एक महान लेख मिला जो Resource-Provider Model को विस्तारित करता है। यह बाहरी संसाधनों तक पहुंचने के लिए अभिव्यक्तियों के उपयोग की अनुमति देता है:

डिफ़ॉल्ट प्रदाता मॉडल (स्पष्ट वैश्विक संसाधन) के लिए $ संसाधन अभिव्यक्ति के लिए वाक्यविन्यास निम्न है।

<%$ Resources: [resourceType], [resourceKey] %> 

एक ही अभिव्यक्ति निम्न सिंटैक्स परिवर्तन के साथ जब ExternalResourceProviderFactory कॉन्फ़िगर किया गया है बाह्य संसाधनों का उपयोग करने, इस्तेमाल किया जा सकता।

<%$ Resources: [assemblyName]|[resourceType], [resourceKey] %> 

उदाहरण के लिए, वैश्विक संसाधन प्रकार से CommonResources.dll विधानसभा से एक संसाधन को पुनः प्राप्त करने, "CommonTerms", तो आपको निम्न स्पष्ट अभिव्यक्ति का प्रयोग करेंगे।

<asp:Label ID="labGlobalResource" runat="server" Text="<%$ Resources:CommonResources|CommonTerms, Hello %>" ></asp:Label> 
0

मैं एक यूटिल क्लास लाइब्रेरी का उपयोग करता हूं जो कि कई उपयोगी वर्गों और कार्यों के अलावा एक सार्वजनिक साझा फ़ंक्शन के साथ i18n क्लास होता है जो संसाधन नाम में संसाधन के मूल्य (स्ट्रिंग) को उसके नाम और एलसीआईडी ​​के आधार पर देता है । मैं अपने वेब परियोजनाओं में कि dll के लिए एक संदर्भ जोड़ सकते हैं और जहां कभी जरूरत है, का कहना है कि एक में एक लेबल मैं लिखने के लिए फ़ाइल कोड-पीछे:

MyLabel.Text = i18n.GetResourceString("MyStringName",1033) 

आप मैं here का उपयोग विधि के एक अधिक विस्तृत विवरण प्राप्त कर सकते हैं मुझे भरोसा है कि वहां दिए गए विवरणों के साथ आप मेरे समाधान को अपनाने या अनुकूलित कर सकते हैं।

+0

यह कोड-पीछे के लिए काम करता है लेकिन मार्कअप के बारे में क्या? – mga911

+0

मुझे खेद है, लेकिन मुझे समझ में नहीं आता है। आप मार्क-अप में लिख सकते हैं: मानना असेंबली Util.dll कहा जाता है। लेकिन आपको अभी भी काम करने के लिए कोड-पीछे से MyLabel.DataBind को कॉल करना होगा। तो आप MyLabel.Text = i18n.GetResourceString ("MyStringName", 1033) सीधे कोड-बैक ऑनलोड में लिख सकते हैं। – esjr

+0

वैसे, यह कोड-बैक के बिना काम करेगा:

<%=Util.i18n.GetResourceString("NameText", 1033)%>
फिर से मानते हुए, असेंबली Util.dll है, जो आपके प्रोजेक्ट में संदर्भित है और i18n का GetResourceString एक सार्वजनिक साझा फ़ंक्शन है। – esjr