我是ASP .NET開發黑色藝術的初學者,所以如果這是一個愚蠢的問題,請原諒我。 經過一番谷歌搜索,然後閱讀(一些...)ASP .NET 3.5釋放,我還沒有找到一種做我想要的方式 - 這通常意味着我試圖做一些愚蠢的事情,或者它是如此明顯我已經錯過了:)在ASP .NET中訪問服務器組件中的資源
我正在創建一個服務器控制,以供我公司正在開發的多個站點使用。這不是什麼幻想,只是一個標準,你可能編輯和創建用戶控制。
這樣做自然需要本地化一些文本。
對我來說,這樣做的一種自然方式是以某種約定命名的全局資源,其中包含服務器控件的項目可能會填充本地化數據。
但是,我在使用我的組件訪問這些資源時遇到了一些麻煩。
在App_GlobalResources文件夾的Project A中創建了一個名爲CreateOrEditUserControl.da.resx的資源文件(注意:是否需要將我的App_GlobalResources文件夾添加到Web配置或其他?)。項目A包含來自項目B並通過程序集引用加載的CreateOrEditUserControl。 CreateOrEditUserControl.da.resx包含映射到字符串Brugernavn關鍵用戶名(這僅僅是一個丹麥的定位,因爲你可能已經猜到了...)
裏面我在的CreateChildControls()方法控制(因爲我需要這裏本地化的字符串),我試過訪問的資源通過以下方式:
HttpContext.GetGlobalResource("CreateOrEditUserControl","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da.resx","UserName");
HttpContext.GetLocalResource("CreateOrEditUserControl.da.resx","UserName");
其中前三種的返回null,而其中最後拋出一個異常,因爲我沒有權利從所述資源在我的組件中,這似乎是合乎邏輯的
到目前爲止,我不得不求助於一個「黑客」,其中你可以在查詢字符串中指定語言,並手動插入字符串。然而,這是不受歡迎的,因爲任何變化都需要組件的更改,而不僅僅是用戶...
這樣做的正確方法是什麼 - 如果有的話?
在此先感謝!
感謝您的回覆!在組件內部加入資源是非常有可能的 - 但並不能解決更大的問題,從我看到的情況來看。它仍然不允許組件的用戶「注入」他自己的本地化數據?感謝ResourceManager/Reader上的提示 - 我會查看這些內容! – Fafnr 2010-09-10 11:18:57