2010-02-26 13 views
6

Mi solución actual consiste en varias bibliotecas de clases y un sitio web. Estoy en el proceso de globalización de la aplicación y me di cuenta de que mis recursos deben ser accedidos por todos los proyectos, no solo por el sitio web, por lo que no funcionó colocar mis recursos en la carpeta App_GlobalResources.Cómo acceder a recursos externos desde el sitio web Aspx

Agregué mis recursos a una de mis bibliotecas de clase y ahora estoy tratando de averiguar cuál es la mejor forma de acceder a los recursos desde mi marcado. Cuando mis recursos estaban en la carpeta App_GlobalResources pude acceder a ellos mediante el uso de una expresión como la siguiente:

<$ Resources: MyApp.Name %> for server controls 

O

<%=Resources.MyApp.Name %> for plain text 

Cuál es la mejor manera de acceder a mis recursos de mi página web aspx archivos ahora que están en una DLL de biblioteca de clase?

Gracias por su ayuda!

+0

Quizás haya configurado el proyecto de ASPX para que dependa del Proyecto de biblioteca de clases. Si simplemente incluye el archivo DLL y no el proyecto de biblioteca de clases, asegúrese de tener una referencia a la DLL en su proyecto. –

Respuesta

4

Encontré un excelente artículo que trata sobre Extendiendo el Resource-Provider Model. Permite el uso de expresiones para acceder a recursos externos:

La sintaxis para una expresión $ Resources para el modelo de proveedor predeterminado (recursos globales explícitos) es la siguiente.

<%$ Resources: [resourceType], [resourceKey] %> 

La misma expresión se puede utilizar para acceder a los recursos externos cuando se configura el ExternalResourceProviderFactory, con el siguiente cambio de sintaxis.

<%$ Resources: [assemblyName]|[resourceType], [resourceKey] %> 

Por ejemplo, para recuperar un recurso del conjunto CommonResources.dll, desde el tipo de recurso mundial "CommonTerms", se utiliza la siguiente expresión explícita.

<asp:Label ID="labGlobalResource" runat="server" Text="<%$ Resources:CommonResources|CommonTerms, Hello %>" ></asp:Label> 
0

Utilizo una biblioteca de clase Util que aparte de una serie de otras clases y funciones útiles contiene una clase i18n con una Función Pública Compartida que devuelve el valor (cadena) de un recurso en un archivo de recursos basado en su nombre y LCID . agrego una referencia a esa DLL en mis proyectos web y donde quiera que sea necesario, por ejemplo en un archivo de código subyacente para una etiqueta que escribo:

MyLabel.Text = i18n.GetResourceString("MyStringName",1033) 

Puede encontrar una descripción más detallada del método que utilizo here Confío en que con los detalles proporcionados allí puede adoptar o adaptar mi solución.

+0

Eso funciona para el código subyacente, pero ¿qué pasa con el marcado? – mga911

+0

Lo siento, pero no entiendo. Puede escribir en el marcado: Asumiendo el ensamblado se llama Util.dll. Pero aún tendría que llamar a MyLabel.DataBind desde el código subyacente para que funcione. Así que es mejor que escriba MyLabel.Text = i18n.GetResourceString ("MyStringName", 1033) directamente en el código de carga posterior. – esjr

+0

Por cierto, esto funcionaría sin código subyacente:

<%=Util.i18n.GetResourceString("NameText", 1033)%>
Suponiendo nuevamente, el ensamblado es Util.dll, al que se hace referencia en su proyecto y GetResourceString de i18n es una Función Pública Compartida. – esjr

Cuestiones relacionadas