方法 : プログラムでリソース値を取得する
更新 : 2007 年 11 月
宣言構文を使用すると、ASP.NET サーバー コントロール プロパティの値をリソース値に設定できます。この代わりに、プログラムによってリソース値を取得することもできます。プログラムによる方法は、デザイン時にリソースの値が不明である場合や、実行時の条件に基づいてリソースの値を設定する場合に使用します。
リソース値は、ローカル リソース ファイルとグローバル リソース ファイルの両方から取得できます。それには、適切な型にキャストできるオブジェクトを返すメソッドを使用します。ASP.NET は厳密な型指定でグローバル リソースをコンパイルするため、厳密に型指定されたメンバを使用してグローバル リソースを取得することもできます。
プログラムでリソース値を取得するには
GetLocalResourceObject メソッドまたは GetGlobalResourceObject メソッドを呼び出し、特定のリソースをグローバル リソース ファイルまたはローカル リソース ファイルからそれぞれ読み取ります。これらのオーバーロードされたメソッドは、HttpContext クラスおよび TemplateControl クラスで使用できます。
GetGlobalResourceObject メソッドは、リソース クラスの名前およびリソース ID を取得します。このクラス名は、.resx ファイル名に基づいています。たとえば、ファイル WebResources.resx およびそれに関連するすべてのローカライズされたファイルは、クラス名 WebResources で参照されます。
GetLocalResourceObject メソッドは、ResourceKey プロパティを表すリソース名を取得します。
ローカル リソース ファイルおよびグローバル リソース ファイルからリソースの値を取得する方法のコード例を次に示します。このメソッドはオブジェクトを返すため、そのリソースを適切な型にキャストする必要があります。
特殊な App_LocalResources フォルダに格納されるローカルの既定のリソース ファイルには、ASP.NET ページに従って名前が付けられます。たとえば、Default.aspx ページで次のコードを使用すると、リソース ファイルに Default.aspx.resx という名前が付けられます。この例では、値 "Found Resources" を持つ Button1.Text という名前の文字列リソースがこのファイルに追加されます。
またこの例では、特殊な App_GlobalResources フォルダに格納されるグローバルの既定リソース ファイルに、WebResourcesGlobal.resx という名前が付けられます。値 https://go.microsoft.com/fwlink/?LinkId=49295 または別のイメージの URL を持つ LogoUrl という名前の文字列リソースが追加されます。
<%@ Page Language="VB" %> <script runat="server"> Protected Sub Button1_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) Button1.Text = _ GetLocalResourceObject("Button1.Text").ToString() Image1.ImageUrl = _ CType(GetGlobalResourceObject("WebResourcesGlobal", _ "LogoUrl"), String) Image1.Visible = True End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get Resources" /> <asp:Image ID="Image1" runat="server" Visible="false" /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { Button1.Text = GetLocalResourceObject("Button1.Text").ToString(); Image1.ImageUrl = (String)GetGlobalResourceObject( "WebResourcesGlobal", "LogoUrl"); Image1.Visible = true; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get Resources" /> <asp:Image ID="Image1" runat="server" Visible="false" /> </div> </form> </body> </html>
厳密な型指定を使用してグローバル リソースを取得するには
次の構文を使用してリソースを取得します。
Resources.Class.Resource
リソースは名前空間 Resources にコンパイルされ、それぞれの既定のリソースが Resources クラスのメンバになります。たとえば、既定のリソース ファイル WebResources.resx を作成し、そのファイルに WelcomeText という名前のリソースを格納すると、次に示すコード例のコードでそのリソースを参照できます。
Dim welcome As String welcome = Resources.WebResources.WelcomeText
String welcome; welcome = Resources.WebResources.WelcomeText;