2012-04-12 79 views
-1

我想在aspx頁面中使用response.write返回一個javascript函數。問題是我返回的函數有很多引號,它們與repsonse.write語法衝突。下面是一個示例代碼:通過Response.Write()回寫函數

Response.Write("  If hello.StartsWith("H", StringComparison.InvariantCultureIgnoreCase) OrElse hello.StartsWith("W", System.StringComparison.InvariantCultureIgnoreCase) Then") 

這給了我一個問題,因爲引號內及早切斷響應。有一個更好的方法嗎?

+0

爲什麼不把它放在.aspx標記中。 – McGarnagle 2012-04-12 17:41:47

+0

您是否嘗試過轉義引號?就像:'Response.Write(「如果hello.StartsWith(\」H \「,...'或者你甚至可以用單引號來包裝內部函數:'Response.Write('if hello.StartsWith(」H「 ,... Then');' – faino 2012-04-12 17:43:37

+0

aspx標記到底是什麼?我需要將這個響應寫入一個函數,所以我不能準確地使用代碼塊,如果這就是你的意思 – 2012-04-12 17:44:36

回答

0

可以更換雙qoute「單qoute「在JavaScript中的JavaScript都」和」做同樣的和c#不會反對單一qoute但可能的RegisterClientScriptBlock是最好的選擇。

0

不是最好的方法,RegisterClientScriptBlock較好,但是這將工作給你的JavaScript發光不VB.NET代碼:

Response.Write("<script>alert('test');</script>") 

注:如果您需要逃避串做谷歌的簡單搜索或這個網站,你會沒事的。

+0

我不明白這是如何得到雙引號問題 – 2012-04-12 17:46:22

+0

它沒有,做一些搜索,在這個網站上回答了這個問題。 – 2012-04-12 17:56:48

0
Use chr(34) for quote as shown below to create a string of js function: 

sJavaScript = sJavaScript & vbTab & vbTab & "if(TheForm." 
sJavaScript = sJavaScript & "FieldName" & ".value == " & Chr(34) & Chr(34) 
sJavaScript = sJavaScript & ")" & vbCrLf & vbTab & vbTab & vbTab & "{" & vbCrLf 
0

如果您輸出的函數是javascript,則一種方法是使用單引號代替。從javascript的角度來看,單引號和雙引號對於字符串文字是或多或少可互換的(儘管我確信有些情況下這不是真的 - 我只是不知道javascript能夠說出它們的含義)。

Response.Write("  If hello.StartsWith('H', ...