2012-10-28 29 views
5

मैं इस कोड ठीक काम करता है खुद serverside नियंत्रण और छवियों का उपयोग कर कि .resx file.In सांत्वना आवेदन में stoores लेखन:कस्टम सर्वर नियंत्रण एएसपी में .resx का उपयोग कर && .resource फ़ाइलों

 ResXResourceReader rsxr = new ResXResourceReader("Resource1.resx"); 

    foreach (DictionaryEntry d in rsxr) 
    { 
     Console.WriteLine(d.Key.ToString() + ":\t" + d.Value.ToString()); 
    } 

    rsxr.Close(); 

लेकिन यहाँ

 protected override void RenderContents(HtmlTextWriter output) 
    { 
     ResXResourceReader rsxr = new ResXResourceReader("Resource1.resx"); 

     base.RenderContents(output); 

     foreach (DictionaryEntry d in rsxr) 
     { 
      output.Write(d.Key.ToString()); 
     } 

    } 

मैं eror:

फ़ाइल नहीं मिल सकी 'C: \ Program Files \ Common Files \ Microsoft साझा \ DevServer \ 10.0 \ Resource1.resx'

मैंने संसाधन प्रबंधक का उपयोग करने का प्रयास किया लेकिन इसे .resource फ़ाइल की आवश्यकता है। मैं resgen टूल तक पहुंच नहीं सकता (कमांड प्रॉम्प्ट [resgen] कमांड नहीं समझता) और इसे इंस्टॉल करें (एरर्स हुआ)।

पहला: मैं .resx क्यों नहीं पढ़ सकता?

दूसरा: Resgen टूल को कैसे इंस्टॉल करें?

धन्यवाद।

+0

कुछ समय पहले जब आपने यह पूछा था, लेकिन मुझे आपके लिए समाधान मिला। – Matt

उत्तर

1

एप्लिकेशन संसाधन रूट में App_GlobalResources फ़ोल्डर के तहत या App_LocalResources में अपनी उपयोगकर्ता नियंत्रण फ़ाइल के समान नाम के साथ अपनी संसाधन फ़ाइल को स्टोर करने के लिए अच्छा अभ्यास माना जाता है। तो उदाहरण के लिए उपयोगकर्ता उपयोगकर्ता नियंत्रण स्थानीय संसाधन फ़ोल्डर में uc.ascx फ़ाइल uc.ascx.resx होना चाहिए। इस तरह इसे बनाए रखना आसान है और एएसपीनेट स्वचालित रूप से इसका पता लगाएगा।

अब अपने जवाब:

पहले: उपयोग शारीरिक करने के लिए Server.MapPath("~/") अंक सीधे जहाँ आपके web.config है। यदि आप नियंत्रण फ़ोल्डर में संसाधन फ़ाइल का उपयोग करना चाहते हैं तो आपको पथ प्राप्त करने के लिए Server.MapPath("~/Controls/Resource1.resx") लिखना होगा।

सुनिश्चित नहीं आप resgen टूल के साथ क्या करना चाहते हैं? जब आप अपना आवेदन संकलित करते हैं, तो संसाधन फ़ाइल भी संकलित की जाएगी। अपनी संसाधन फ़ाइल का चयन करें और एफ 4 पर क्लिक करें, यह आपको क्रिया का निर्माण करेगा, निर्माण कार्य में संसाधन का चयन करेगा और आपकी संसाधन फ़ाइल असेंबली में शामिल की जाएगी।

अधिक जानकारी के लिए इस पोस्ट की समीक्षा कर सकते हैं: How to use image resource in asp.net website?

+2

ठीक है। मैं अपने .resx फ़ाइल के लिए [एम्बेडेड संसाधन] विकल्प का उपयोग करता हूं। फिर आपको यह समझाया जाना चाहिए कि यह कोड क्यों देता है (कंसोल एप्लिकेशन में) MissingManifestResourceException [कोड] संसाधन प्रबंधक संसाधन प्रबंधक = नया संसाधन प्रबंधक ("ConsoleApplication1.Resource1.resx", GetType() ।सभा); ऑब्जेक्ट ए = resourceManager.GetObject ("line.gif"); [/ कोड] –

1

अपने विवरण से, मैं समझता हूँ कि आप का पता लगाने और उपयोगकर्ता नियंत्रण के संसाधन फ़ाइल का उपयोग करने की जरूरत है। मैंने पाया है कि यह अच्छी तरह निम्नलिखित तरीके से काम करता है:

  1. परियोजना स्तर पर एक App_GlobalResources बनाएँ (संदर्भ मेनू Add -> Add ASP.NET Folder -> App_GlobalResources के माध्यम से)
  2. नियंत्रण के रूप में एक ही नाम के साथ ressource फ़ाइल बनाएँ, लेकिन App_GlobalResources अंदर। उदाहरण के लिए, यदि नियंत्रण myControl.ascx नाम दिया गया है, तो डिफ़ॉल्ट भाषा के लिए ressource फ़ाइल का नाम myControl.ascx.resx
  3. आवश्यक प्रत्येक भाषा के लिए अतिरिक्त संसाधन संसाधन बनाएं। उदाहरण के लिए, यदि आपको जर्मन की आवश्यकता है ("de-DE"), तो myControl.ascx.de जोड़ें।resx
  4. वर्ग MultiLanguageUserControl इस प्रकार जोड़ें:

    public class MultiLanguageUserControl : System.Web.UI.UserControl 
    { 
        public string getResValue(string id) 
        { 
         var ctrlPath = TemplateControl.AppRelativeVirtualPath; 
         var ctrlFile = System.IO.Path.GetFileName(ctrlPath); 
         var resObj = GetGlobalResourceObject(ctrlFile, id); 
         if (resObj!=null) 
            return resObj.ToString(); 
         else 
            return string.Format("UNRESOLVED[{0}]", id);   
        } 
    } 
    
  5. ओपन myControl के पीछे कोड और यह System.Web.UI.UserControl से बजाय MultiLanguageUserControl से विरासत बनाने:

    public partial class myControl : MultiLanguageUserControl { //... }

  6. एचटीएमएल कोड में , नए फ़ंक्शन का उपयोग करें, उदाहरण के लिए: <%=getResValue("resid")%>, जहां "resid" उस रिसोर्स स्ट्रिंग का नाम है जिसे आप देखना चाहते हैं। आप अपनी आवश्यकताओं के आधार पर <%= के बजाय HTML-एन्कोडिंग टैग <%: का भी उपयोग कर सकते हैं। वैकल्पिक रूप से, आप ressource फ़ाइल से मूल्य पुनर्प्राप्त करने के लिए अपने उपयोगकर्ता नियंत्रण में अपने सर्वर-पक्षीय सी # कोड में कहीं भी getResValue का उपयोग कर सकते हैं।

  7. सुनिश्चित करें कि आप पृष्ठ के Page_Load ईवेंट में भाषा पहचान का समर्थन करते हैं, जो उपयोगकर्ता नियंत्रण का उपयोग करता है। आप यह कैसे कर सकते हैं अच्छी तरह से वर्णित here (फ़ंक्शन InitializeCulture देखें)।

आप उपयोगकर्ता नियंत्रण के अंदर से पृष्ठ की स्थानीय संसाधन तार में पढ़ना चाहते हैं तो एक बार देख here ले।

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

  • कोई संबंधित समस्या नहीं^_^