2010-06-23 8 views
1

Je travaille dans un répéteur sur des billets de blog et j'affiche un morceau ShareThis JavaScript en bas. Le titre et l'URL du message sont envoyés à JS. Dans un cas de test, le titre d'un article comporte une seule citation, par ex.Enveloppez un contrôle ASP.NET avec des guillemets

post test de Mark

Depuis que je dois conserver cette citation unique lorsqu'il est envoyé à ShareThis, je dois envelopper cette chaîne JavaScript entre guillemets, mais la chaîne est liée par un littérales et Je ne peux pas envelopper le littéral dans des guillemets doubles:

C'est veux que je veux, mais nE FONCTIONNE pAS:

SHARETHIS.addEntry({ title: "<asp:Literal ID="ltlTitle" runat="server" />", etc.. 

Je ne peux envelopper la littérale avec des guillemets simples comme ceci:

SHARETHIS.addEntry({ title: '<asp:Literal ID="ltlTitle" runat="server" />', etc.. 

Mais qui se traduira par du mauvais code frontal:

SHARETHIS.addEntry({ title: 'Mark's test post', etc.. 

Comment puis-je encoder ce envelopper correctement ou en quelque sorte le contrôle des guillemets doubles? Je suis au courant de HttpUtility.HtmlEncode et Server.HtmlEncode mais je ne vois pas comment cela va m'aider.

+0

ce que sur l'utilisation '<% = blabla()%>' la place? – vittore

Répondre

0

Il se trouve que je peux effectivement utiliser guillemet simple dans le contrôle ASP.NET lui-même, que je ne connaissais travaillé. Je pensais que c'était une erreur d'analyse, mais correctement mes page se charge

title: "<asp:Literal ID='ltlTitle' runat='server' />" 

Le résultat ce que je veux:

title: "Mark's test post" 
1

Vous devez "encoder javascript" votre chaîne sur le serveur. Vous recherchez probablement quelque chose comme ça.

How do I escape a string inside JavaScript code inside an onClick handler?

+0

J'ai essayé de faire un remplacement dans mon C# sur une seule citation à la valeur encodée de '\ x27' et il restitue encore incorrectement. –

+0

Étant donné que vous ne vous souciez que de la guillemets simples, essayez ce correctif rapide. lblTitle.Text = title.Remplacer ("'", "\\'"); Mais si vous voulez être sûr, vous devrez éventuellement créer votre propre fonction de codage JavaScript. – stun