Asp.net多語言中的App_GlobalResources和LocalResourc
(2010-05-24 14:11:33)App_GlobalResources的文件是全局文件資源,可以在任何頁面通過Resources直接使用這裏面的資源文件。示例如下:
1、在App_GlobalResources中增加一個文件叫做ResourceTest.resx
2、在ResourceTest.resx中增加兩個項 PageTitle 值爲“中國加油!” LabelText值爲“奧運順利!”
3、打開aspx頁面的,然後在Page_Load方法中可以直接這樣使用
protected void Page_Load(object sender, EventArgse)
{
this.Title = Resources.ResourceTest.PageTitle;
Label1.Text = Resources.ResourceTest.LabelText;
}
這裏的ResouceTest就是那個資源文件的文件名,在VS中,可以自動感知出ResourceTest。
直接在頁面的控件中的使用方法是:
<asp:Label ID="Label1" runat="server"Text="<%$Resources:ResourceTest,LabelText%>"></asp:Label>
如果使用這種方式綁定了App_GlobalResources,那麼就不能再綁定App_LocalResources中的資源文件了
如果要支持英文,就在App_GlobalResources中增加一個文件,文件命名格式是:ResourcesTest.en-us.resx,在頁面的使用方式不變。當你用瀏覽器訪問時,系統會自動偵測出你的瀏覽器設置的默認語言,然後自動調用不同的資源包來呈現出來。
除了上面所談到的方式可以直接使用資源包,還可以通過HttpContext.GetGlobalResourcesObject來獲取資源包的內容。
HttpContext.GetGlobalResourceObject(resxFile, MyResName)
HttpContext.GetGlobalResourceObject(resxFile, MyResName,CurrentCulture)
這個方法第一個參數是資源文件名,第二個參數是要檢索的鍵值。調用例子爲:string GetGlobalResources(string resxFile,string resxKey)
{
stringresxValue=(string)HttpContext.GetGlobalResourceObject(resxFile, resxKey)
if(string.IsNullOrEmpty(resxValue)
{
return string.Empty;
}
return resxValue;
}
App_LocalResources文件夾,這個文件夾中放的是頁面的資源文件,這些資源文件和每個Aspx頁面對應。比如我在網站項目下添加了一個Default.aspx文件,在設計VS的模式下,選擇工具“生成本地資源”就會自動在App_LocalResources中生成一個名字爲Default.aspx.resx的資源文件。
編程訪問的方式是:
HttpContext.GetLocalResourceObject("resxFile","resxKey")
直接在控件中的訪問方式:
<asp:Label ID="Label1" runat="server"meta.:resourcekey="LabelText"></asp:Label>