2013-08-27 30 views
0

我有一個treeview,動態地添加節點並在每個節點上添加javscript click函數..這裏thisFileNode.Value有url值,避免了url中的spl字符我在代碼中使用了轉義函數..仍然不工作.. 任何人都可以幫我請在javascript中避免特殊字符在url中

我不逃避,它實際上做什麼?以及如何工作?

thisFileNode.NavigateUrl = "javascript:clickNode(this, escape('" + thisFileNode.Value + "'));" 

如果在url中應該刪除任何spl字符,我該如何獲取有效的url?

回答

0

或者,可以手動特殊字符轉義:

thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + HtmlEscape(thisFileNode.Value) + "');" 

HtmlEscape方法:

public static string HtmlEscape(string str) 
    { 
     return str 
     .Replace("&", "&") 
     .Replace("\"", """) 
     .Replace("'", "'") 
     .Replace("<", "&lt;") 
     .Replace(">", "&gt;"); 
    } 
} 
0

使用HttpUtility.JavaScriptStringEncode:

 thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + 
     HttpUtility.JavaScriptStringEncode(thisFileNode.Value) + "');" 
+0

謝謝onof,現在我能夠得到編碼的值在我的JavaScript ...我怎麼能解碼,原始url沒有特殊charcters。 –

+0

@ParvathiNair Javascript中使用decodeURI。服務器端你不需要解碼 – onof

+1

v2.0的任何提示? 'JavaScriptStringEncode'只能用於.NET v4.0。 – marquito

0

在JavaScript中,你可以使用encodeURI(str)編碼您的URL或encodeURIComponent(str)以編碼參數(例如作爲組件給出的URL)。更多解釋here

使用decodeURI(str)decodeURIComponent(str)得到原始字符串。

這個東西就是那些方法把url中被禁止的特殊字符轉換成轉義字符串,如&變成&amp;

thisFileNode.NavigateUrl = 
    "javascript:clickNode(this, decodeURI('" + thisFileNode.Value + "'));" 

注:這是相關的,如果thisFileNode.Value是URL或擬被插入到一個URL。

你可能需要的也是(或者相反)來轉義引號等等,這些可能被javascript本身誤解。我不是.Net專家,但HttpUtility.JavaScriptStringEncode應該做的伎倆。你不需要解碼你的字符串,因爲它準確地允許你設置JavaScript字符串。