web-dev-qa-db-fra.com

Comment lire les paramètres de la clé APP Web.config dans le balisage HTML

J'ai un site ASP.NET qui utilise un contrôle ActiveX tiers. Je dois passer quelques paramètres à la balise OBJECT dans la page HTML. Si je code ces paramètres dans le code HTML, tout fonctionne. 

Je voudrais placer les paramètres dans mon web.config avec des paires de paramètres d'application "clé/valeur".

Mon problème est que je ne peux pas lire le paramètre de clé d'application dans le balisage HTML pour les transmettre avec succès en tant que paramètres. Je peux les lire très bien à partir du code côté serveur situé derrière. 

Quelle est la bonne façon de lire ces paramètres dans le balisage HTML côté client?

Merci

14
Khalid Rahaman

En plus d'utiliser <%=ConfigurationManager.AppSettings["MyAttribute"]%>, comme d'autres l'ont noté, vous pouvez également utiliser expression builders . La syntaxe est un peu différente. Au lieu de <%=...%>, vous utilisez <%$ AppSettings: MyAttribute %>, comme suit:

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

Si vous ne faites que vider une valeur appSettings directement dans du HTML statique (comme je suppose que vous êtes dans cet exemple), ces deux approches sont identiques à toutes fins pratiques. 

Ce qui est bien avec les générateurs d’expression, c’est que vous pouvez les utiliser pour affecter de manière déclarative des valeurs appSettings aux propriétés du contrôle Web, ce que vous ne pouvez pas avec la syntaxe <%=...%>. Autrement dit, avec les créateurs d’expression, vous pouvez faire quelque chose comme:

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

Alors que vous pourriez pas faire:

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

Le code suivant:

<%$ AppSettings: MyAttribute %>

n'est pas compatible avec le balisage HTML général et la fonction JavaScript! C'est bon pour les balises asp.

Tandis que

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

fonctionne vraiment dans le balisage HTML général.

alors

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

est ma recommandation!

9
huysorng

Vous pouvez utiliser la ConfigurationManager dans votre page ASPX. Ensuite, vous pouvez ajouter dans vos paramètres de variable OBJECT:

Web.Config

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

ASPX

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

Je vous suggère de générer votre balise OBJECT de manière dynamique au moment de l'exécution à partir du serveur. De cette façon, vous pouvez injecter tous les paramètres que vous lisez dans le fichier web.config.

0
CesarGon

Vous avez quelques options. Si vous ajoutez l'attribut runat="server" à votre balise d'objet, vous pouvez y accéder depuis votre codebehind à l'aide de son ID et ajouter des attributs de la manière suivante:

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

Si vous ne voulez pas faire cela, vous pouvez utiliser des littéraux en ligne:

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

De toute façon, le travail devrait être fait.

0
Ender