Procedura: recuperare valori di risorse a livello di codice
Aggiornamento: novembre 2007
È possibile utilizzare la sintassi dichiarativa per impostare i valori delle proprietà del controllo server ASP.NET su un valore di risorsa. In alternativa, è possibile recuperare i valori delle risorse a livello di codice. Tale opzione è utile se il valore della risorsa non è noto in fase di progettazione o se si desidera impostarlo in base a una condizione in fase di esecuzione.
È possibile ottenere i valori delle risorse dai file delle risorse locali e globali che utilizzano i metodi che restituiscono un oggetto di cui è possibile eseguire il cast al tipo appropriato. Poiché ASP.NET compila le risorse globali con una tipizzazione forte, è possibile ottenere le risorse globali con membri fortemente tipizzati.
Per recuperare i valori delle risorse a livello di codice
Chiamare il metodo GetLocalResourceObject or GetGlobalResourceObject per leggere le risorse specifiche da un file, rispettivamente, di risorse globali o locali. Questi metodi di overload sono disponibili nelle classi HttpContext e TemplateControl.
Il metodo GetGlobalResourceObject accetta il nome di una classe di risorse e l'ID delle risorse. Il nome della classe è basato sul nome del file .resx. Ad esempio, al file WebResources.resx, e a tutti i file localizzati associati, viene fatto riferimento in base al nome della classe WebResources.
Il metodo GetLocalResourceObject accetta un nome di risorsa che rappresenta una proprietà ResourceKey.
Nell'esempio di codice riportato di seguito viene illustrato come ottenere il valore di una risorsa da un file di risorse locali e globali. I metodi restituiscono un oggetto. Pertanto è necessario eseguire il cast della risorsa al tipo appropriato.
A un file di risorse predefinite locali archiviato nella cartella App_LocalResources speciale viene assegnato un nome in base alla pagina ASP.NET. Ad esempio, se si utilizza il codice seguente in una pagina Default.aspx, al file delle risorse deve essere assegnato il nome Default.aspx.resx. In questo esempio aggiungere una risorsa di tipo stringa nel file Button1.Text con il valore "Found Resources".
In questo esempio, inoltre, a un file di risorse predefinite globali archiviato nella cartella App_GlobalResources speciale viene assegnato il nome WebResourcesGlobal.resx. Aggiungere una risorsa di tipo stringa detta LogoUrl con il valore https://go.microsoft.com/fwlink/?LinkId=49295 o l'URL di un'altra immagine.
<%@ Page Language="VB" %> <script > 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 > <title>Untitled Page</title> </head> <body> <form id="form1" > <div> <asp:Button ID="Button1" OnClick="Button1_Click" Text="Get Resources" /> <asp:Image ID="Image1" Visible="false" /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <script > 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" > <title>Untitled Page</title> </head> <body> <form id="form1" > <div> <asp:Button ID="Button1" OnClick="Button1_Click" Text="Get Resources" /> <asp:Image ID="Image1" Visible="false" /> </div> </form> </body> </html>
Per recuperare le risorse globali con la tipizzazione forte
Ottenere la risorsa utilizzando la seguente sintassi:
Resources.Class.Resource
Le risorse vengono compilate nello spazio dei nomi Resources e ciascuna risorsa predefinita diventa un membro della classe Resources. Ad esempio, se si è creato il file di risorse predefinite WebResources.resx e il file contiene una risorsa detta WelcomeText, è possibile creare un riferimento per la risorsa nel codice, come illustrato nel seguente esempio di codice:
Dim welcome As String welcome = Resources.WebResources.WelcomeText
String welcome; welcome = Resources.WebResources.WelcomeText;