2010-10-30 16 views
13

Tengo un sitio ASP.NET que utiliza un control ActiveX de terceros. Tengo que pasar algunos parámetros a la etiqueta OBJECT en la página HTML. Si codigo estos parámetros en el HTML todo funciona.Cómo leer la configuración de las teclas de la aplicación web.config en la marca HTML

Me gustaría colocar los parámetros en mi web.config con los pares de configuración de la aplicación "clave/valor".

Mi problema es que no puedo leer la configuración de la clave de la aplicación en el marcado HTML para pasarlos con éxito como parámetros. Puedo leerlos bien desde el código del servidor detrás.

¿Cuál es la forma correcta de leer estas configuraciones en el marcado HTML del lado del cliente?

Gracias

Respuesta

28

Además de usar <%=ConfigurationManager.AppSettings["MyAttribute"]%>, como han notado otros, también puede usar expression builders. La sintaxis es un poco diferente. En lugar de <%=...%> utiliza <%$ AppSettings: MyAttribute %>, así:

<object id="myObjectID attr="<%$ AppSettings: MyAttribute %>" ...> 

Si se acaba volcando un valor appsettings directamente en HTML estático (como supongo que usted está en este ejemplo), estos dos enfoques son idénticos para todos los propósitos prácticos.

Lo bueno de los constructores de expresión, sin embargo, es que se puede utilizar para asignar valores de forma declarativa AppSettings a las propiedades de control Web, algo que no puede hacer con la sintaxis <%=...%>.Es decir, con los constructores de expresión se puede hacer algo como:

<asp:Label runat="server" ... Text="<%$ AppSettings: MyAttribute %>" /> 

Mientras que usted podría no hace:

<asp:Label runat="server" ... Text="<%=ConfigurationManager.AppSettings["MyAttribute"]%>" /> 
0

que sugieren que genera la etiqueta OBJETO dinámicamente en tiempo de ejecución del servidor. De esta forma, puede inyectar los parámetros que lea desde el archivo web.config.

3

Puede usar el ConfigurationManager en su página ASPX. A continuación, puede añadir en su OBJECT parámetros de la etiqueta:

Web.Config

</configuration> 
    <appSettings> 
     <add key="Setting" value="Value"/> 
    <appSettings> 
</configuration> 

ASPX

<object> 
    <param name="Setting" value="<%= System.Configuration.ConfigurationManager.AppSettings["Setting"] %>" /> 
</object> 
0

Usted tiene algunas opciones. Si se agrega el atributo runat="server" a su etiqueta de objeto, se puede acceder a él desde el código subyacente utilizando su ID y añadir atributos de esa manera:

myObjectID.Attributes.Add("attrName", "value") 

Si no quiere hacer eso, usted podría utilizar literales en línea :

<object id="myObjectID attr="<%= ConfigurationManager.AppSettings("MyAttribute") %>" ...> 

De cualquier forma debe hacer el trabajo.

9

El siguiente código:

<%$ AppSettings: MyAttribute %> 

no es compatible con el general Marcado de HTML y función de JavaScript! Es bueno para la etiqueta asp.

Mientras

<%=ConfigurationManager.AppSettings("MyAttribute")%> 

realmente funcionan en el formato HTML en general.

por lo

<%=ConfigurationManager.AppSettings("MyAttribute")%> 

es mi recomendación!

+0

usándolo así '<% = ConfigurationManager.AppSettings (" MyAttribute ")%>' dará un error al decir, no puede usar AppSettings como método. Entonces, úsalo así. '<% = ConfigurationManager.AppSettings [" MyAttribute "]%>' –

Cuestiones relacionadas