2010-06-23 55 views
1

我正在一個Repeater上工作,並在底部顯示一個ShareThis JavaScript塊。該帖子的標題和URL正在發送給JS。在一個測試案例中,帖子的標題有單引號,例如使用雙引號將ASP.NET控件包裝起來

Mark的測試後

因爲我需要保留該單引號時被送到ShareThis,我需要包裝,在雙引號JavaScript字符串,但該字符串正在通過文字的約束,我不能換行文字在雙引號:

這是要我要,但不工作:

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

我只能包住文字單引號,像這樣:

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

但是,這會導致糟糕的前端代碼:

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

我怎麼能編碼這個正確或以某種方式包裹在雙引號的控制?我知道HttpUtility.HtmlEncodeServer.HtmlEncode,但我不明白這些將如何幫助我。

+0

關於使用什麼'<%=布拉布拉()%>'呢? – vittore 2010-06-23 15:33:35

回答

0

事實證明,其實我可以在ASP.NET控件本身,這是我從來不知道曾使用單引號。我曾經認爲這是一個解析器錯誤,但我的網頁加載正確

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

結果是我想要的東西:

title: "Mark's test post" 
1

您需要在服務器端對您的字符串進行「javascript編碼」。 您可能正在尋找類似的東西。

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

+0

我試圖在我的C#中用單引號替換'\ x27'的編碼值,但它仍然呈現不正確。 – 2010-06-23 15:49:06

+0

由於您只擔心單引號,請嘗試使用此快速修復方法。 lblTitle.Text = title.Replace(「'」,「\\'」); 但是,如果您想保護自己,最終您需要創建自己的JavaScript編碼功能。 – stun 2010-06-23 15:56:27