2010-01-27 5 views
3

Je souhaite utiliser la syntaxe ExpressionBuilder d'ASP.NET pour récupérer dynamiquement le domaine du contenu statique d'un AppSetting.Syntaxe d'ExpressionBuilder ASP.NET - sortie AppSetting dans la balise img

J'utilise la syntaxe suivante, qui ne fonctionne pas:

<img src="<%$Appsettings:STATIC_CONTENT_DOMAIN %>/img/logo.jpg" alt="logo" width="176" height="159" /> 

Pour votre information, la sortie HTML souhaitée est:

<img src="http://static.myserver.com/img/logo.jpg" alt="logo" width="176" height="159" /> 

S'il vous plaît noter, je ne peux pas utiliser <% =%> syntaxe parce que ma page ASPX doit être CompilationMode = "jamais". (La raison pour laquelle j'utilise la syntaxe ExpressionBuilder est que cela fonctionne dans les pages sans compilation)

Des idées sur comment je peux faire ça?

Répondre

5

Cette approche a fonctionné pour moi (pas très lisible:) ...

<img src="<asp:Literal runat='server' Text='<%$Appsettings:STATIC_CONTENT_DOMAIN%>'/>/img/logo.jpg" /> 
0

Je crois que vous devez utiliser un contrôle asp.net côté serveur, tels que:

<asp:Image ID="MyImage" runat="server" ImageUrl="<%$Appsettings:STATIC_CONTENT_DOMAIN %>" /> 

Je ne sais pas si vous pouvez combiner la déclaration avec des informations statiques comme vous avez, par exemple: Je pense que ce n'est pas possible, mais je suppose que ça vaut le coup. Essayez et voir ...

+0

Voici une discussion similaire: http://stackoverflow.com/questions/1681892/appsettings-in-markup-issue –

+0

J'ai essayé votre deuxième exemple. Cela ne fonctionne pas avec le contenu statique après le bloc d'expression. – frankadelic

+0

Oui, je ne pensais pas que ce serait le cas. Vous allez probablement être assez menotté en ne pouvant pas compiler les pages, en ce qui concerne la flexibilité. –

2

Vous voudrez peut-être envisager d'écrire un constructeur d'expression personnalisée - ils ne sont pas trop difficiles écrire. Voici quelques tutoriels:

Vous pouvez avoir votre propre syntaxe d'expression tels que:

<%$ MyCdnUrl: Static, '/img/logo.jpg' %> 

alors vous Parse tout ce qui suit le « : "et créez l'URL dont vous avez besoin.

Je pense que les générateurs d'expression doivent être utilisés comme "valeurs de propriété", donc vous ne pouvez pas les utiliser complètement seuls. Vous devrez toujours utiliser quelque chose comme <img runat="server"> ou un <asp:Image> contrôle ou un <img> avec le <asp:Literal> à l'intérieur.

+0

C'est une syntaxe beaucoup plus propre que ma réponse. Je vais l'essayer. – frankadelic

+0

Il semble que j'ai besoin d'utiliser runat = "server" sur la balise . Le problème ici est que je voudrais aussi utiliser ceci avec des références de script côté client, telles que . Malheureusement, cela ne fonctionnera pas avec runat = "server". – frankadelic

+0

@frank pouvez-vous clarifier pourquoi avoir runat = "serveur" ne fonctionnera pas?Il émet toujours une balise '' régulière à laquelle vous pouvez accéder à partir du code JavaScript. – Eilon

Questions connexes