我有一个树视图,即动态添加节点并在每个节点上添加javscript点击功能..这里thisFileNode.Value有url值,避免了url中的spl charcters我在我的代码中使用了escape函数..仍然无法正常工作。 。 请有人帮帮我吗
我不熟悉逃避,它究竟做了什么?以及如何处理这个问题?
thisFileNode.NavigateUrl = "javascript:clickNode(this, escape('" + thisFileNode.Value + "'));"
如果url中的任何spl字符应该删除,我怎样才能获得有效的url ??
答案 0 :(得分:0)
使用HttpUtility.JavaScriptStringEncode:
thisFileNode.NavigateUrl = "javascript:clickNode(this, '" +
HttpUtility.JavaScriptStringEncode(thisFileNode.Value) + "');"
答案 1 :(得分:0)
或者,您可以手动转义特殊字符:
thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + HtmlEscape(thisFileNode.Value) + "');"
HtmlEscape方法:
public static string HtmlEscape(string str)
{
return str
.Replace("&", "&")
.Replace("\"", """)
.Replace("'", "'")
.Replace("<", "<")
.Replace(">", ">");
}
}
答案 2 :(得分:0)
在javascript中,您可以使用encodeURI(str)
对您的网址进行编码,或使用encodeURIComponent(str)
对其中的一部分进行编码(例如作为组件提供的网址)。更多解释here。
使用decodeURI(str)
和decodeURIComponent(str)
获取原始字符串。
这就是这些方法将url中禁止的特殊字符替换为&
成为&
的转义字符串。
thisFileNode.NavigateUrl =
"javascript:clickNode(this, decodeURI('" + thisFileNode.Value + "'));"
注意:如果thisFileNode.Value
是网址或打算插入网址,则这是相关的。
你可能还需要(或者代之以)逃避引用等等,这可能会被javascript本身误解。我不是.Net专家,但是HttpUtility.JavaScriptStringEncode
应该做的。您不需要解码字符串,因为它可以精确地允许您设置javascript字符串。