Obtenir la valeur à partir du web.config applicationSettings en ASP.NET balisage
Je suis peut-être complètement à côté de la piste, donc je vais juste demander ici si quelqu'un peut m'aider.
Ce que je veux faire, c'est d'insérer une valeur à partir de mon site web.config, stockée dans un applicationSettings région, dans mon aspx balisage. Plus précisément, je veux reade une URL à partir de la config. C'est le configSection installation que j'ai utiliser
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=123456">
<section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=12345" requirePermission="false" />
</configSections>
Plus tard dans ce fichier sont les paramètres réels de la sorte:
<applicationSettings>
<MyApp.Properties.Settings>
<setting name="ImagesUrl" serializeAs="String">
<value>http://resources/images/</value>
</setting>
Maintenant, je veux de référence de la valeur ci-dessus dans les balises comme ceci:
<asp:Image ID="Image1" runat="server" ImageUrl="<%$AppSettings:ImagesUrl%>/Image1.jpg
Je sais qu'il y a une expression disponible <%$ AppSettings: ImagesUrl %>, mais je ne suis pas en utilisant la appsettings partie du web.config plutôt le configSection.
EDIT:
Je crois que je ne peut faire qu'avec ExpressionBuilder, parce que je dois concaténer la chaîne avec la personne nom de l'image. J'ai changé l'exemple ci-dessus pour refléter cela.
J'aime Bert Smith Solution de Code ci-dessous pour accéder à la section de configuration, seulement j'ai besoin de le mettre dans un générateur d'expression.
Je suis coincé à la substitution de la GetCodeExpression méthode de l'endroit où je voudrais appeler le Gestionnaire de Configuration, mais je ne comprends pas comment construire une expression paramètres.
public class SettingsExpressionBuilder: ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
return ??
}
MODIFIER
Le résultat ressemble à ceci, et fonctionne pour tous les types de fichiers, et pas seulement des images:
<asp:ScriptReference Path='<%$Code:GetAppSetting("ResourcesUrl","JS/jquery/jquery.jqplot.js")%>'
et j'ai simplement utilisé l'exemple de Microsoft afin de retourner n'importe quel type de code à partir de l'expression builder:
return new CodeSnippetExpression(à l'entrée.Expression);
Et GetAppSetting est une méthode dans ma Page personnalisée de classe.
Après réflexion, j'ai être la lecture de ce mal. Êtes-vous juste le stockage de la partie au début de la référence externe ou de la totalité de l'emplacement de l'image? Ce qui conduit à la question suivante: est-ce réellement le soutien de multiples environnements (test, le stade, la prod)?
Oui juste la première partie de l'URL, donc je peux changer que dans des environnements différents
OriginalL'auteur Niels Ziegler | 2011-05-20
Vous devez vous connecter pour publier un commentaire.
En général, vous de personnaliser les paramètres de la classe de lire ces valeurs comme ce artical décrit. Personnellement, je voudrais juste utiliser le appSettings comme suggéré ci-dessus que c'est de la fonctionnalité existante et pour ce que vous faites sur la surface semble adéquat.
Cependant, ne connaissant pas votre situation, ce que votre tentative de faire pourrait être résolu sans les paramètres personnalisés comme:
Dans le code derrière, j'ai créé une fonction protégée pour récupérer le paramètre
Puis dans le aspx balisage j'appelle cette fonction
Espère que cette aide.
Suivi:
La CodeExpression va ressembler à quelque chose comme ceci:
Dans mon Test, j'ai créé une catégorie appelée
CustomSettingsExpressionBuilder
et de l'ajouter au dossier App_Code. Ajout de la configuration personnalisée express pour le web.config et l'a appelé à partir aspx comme suit:J'espère que le suivi de la section est ce que vous cherchez. Si besoin je peux poster l'ensemble de la classe, mais il semblait que vous étiez dans la bonne direction.
Ce n'est pas ce que j'ai mis en place à la fin, mais il est venu près. Le problème est, je ne peux toujours pas ajouter le nom de l'image, à moins peut-être que je peux prendre le "entrée" chaîne à part dans le exprBuilder, ou avoir plus d'un paramètre. J'ai donc maintenant utiliser un autre expressionBuilder j'avais déjà d'un blog, qui compile toutes les valides code C#. J'ai créé une méthode qui retourne la demande appSetting chaîne et je peux concaténer le nom de l'image. <%$Code:GetAppSetting("ResourcesUrl") + "images/image.jpg" %>
OriginalL'auteur Bert Smith
T-elle doit être dans une balise? Pourquoi ne pas vous fixer dans le code-behind.
L'un de l'autre façon serait de définir une propriété ou une méthode statique dans votre code-behind et puis en utilisant dans le balisage.
OriginalL'auteur gbs
Je ne suis pas sûr au sujet de la ASP.NET peu d'elle, mais si c'était normal de code que vous feriez
MyApp.Properties.Settings.Default.ImagesUrl
, alors essayez deQu'il serait certainement plus facile de les stocker dans
<appSettings>
.OriginalL'auteur Graham Clark