Cómo: Recuperar valores de recursos mediante programación

Actualización: noviembre 2007

Puede utilizar sintaxis declarativa para establecer los valores de las propiedades de control de servidor ASP.NET como un valor de recurso. O bien, puede recuperar los valores de los recursos mediante programación. Podría hacerlo si el valor del recurso no es conocido en tiempo de diseño o si desea establecer el valor del recurso a partir de una condición en tiempo de ejecución.

Puede obtener valores de recursos a partir de archivos de recursos locales y globales que utilicen métodos que devuelven un objeto que es posible convertir al tipo apropiado. Dado que ASP.NET compila los recursos globales con establecimiento inflexible de tipos, también se pueden obtener recursos globales mediante miembros con establecimiento inflexible de tipos.

Para recuperar mediante programación valores de recursos

  • Llame al método GetLocalResourceObject o GetGlobalResourceObject para leer determinados recursos de un archivo de recursos global o local, respectivamente. Estos métodos sobrecargados están disponibles en las clases HttpContext y TemplateControl.

    El método GetGlobalResourceObject toma el nombre de una clase de recursos y el identificador de recurso. El nombre de clase está basado en el nombre del archivo .resx. Por ejemplo, se hace referencia al archivo WebResources.resx y a todos los archivos localizados asociados mediante el nombre de clase WebResources.

    El método GetLocalResourceObject toma un nombre del recurso que representa una propiedad ResourceKey.

    En el siguiente ejemplo de código se muestra cómo obtener el valor de un recurso de un archivo de recursos local y global. Los métodos devuelven un objeto; por consiguiente, debe convertir el recurso al tipo adecuado.

    Un archivo de recursos local predeterminado almacenado en la carpeta especial App_LocalResources recibe el nombre con arreglo a la página ASP.NET. Por ejemplo, si se utiliza el código siguiente en una página Default.aspx, el archivo de recursos debe denominarse Default.aspx.resx. Para este ejemplo, agregue un recurso de cadena a este archivo denominado Button1.Text con el valor "Found Resources".

    Para el mismo ejemplo, un archivo de recursos global predeterminado almacenado en la carpeta especial App_GlobalResources recibe el nombre WebResourcesGlobal.resx. Agregue un recurso de cadena denominado LogoUrl con el valor https://go.microsoft.com/fwlink/?LinkId=49295 o la dirección URL de otra imagen.

    <%@ 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>

Para recuperar recursos globales mediante establecimiento inflexible de tipos

  • Obtenga el recurso mediante la sintaxis siguiente:

    Resources.Class.Resource
    

    Los recursos se compilan en el espacio de nombres Resources y cada recurso predeterminado se convierte en miembro de la clase Resources. Por ejemplo, si ha creado el archivo de recursos predeterminado WebResources.resx y el archivo contiene un recurso denominado WelcomeText, puede hacer referencia al recurso en el código tal como se muestra en el siguiente ejemplo:

    Dim welcome As String
    welcome = Resources.WebResources.WelcomeText
    
String welcome;
welcome = Resources.WebResources.WelcomeText;

Vea también

Conceptos

Información general sobre los recursos de las páginas Web ASP.NET