0

我有一个树视图,可以动态添加节点并在每个节点上添加 javscript 点击功能。这里 thisFileNode.Value 有 url 值,避免 url 中的 spl 字符我在我的代码中使用了转义函数.. 仍然无法正常工作.. 任何人都可以请帮帮我

我不熟悉逃生,它实际上是做什么的???以及如何解决这个问题?

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

如果 url 中的任何 spl 字符应该删除,我怎样才能获得有效的 url?

4

3 回答 3

0

使用 HttpUtility.JavaScriptStringEncode:

      thisFileNode.NavigateUrl = "javascript:clickNode(this, '" + 
        HttpUtility.JavaScriptStringEncode(thisFileNode.Value) + "');"
于 2013-08-27T11:41:55.723 回答
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;");
    }
}
于 2013-08-27T11:56:07.287 回答
0

在 javascript 中,您可以使用encodeURI(str)对 URLencodeURIComponent(str)进行编码或对其中的一部分进行编码(例如作为组件给出的 URL)。更多解释在这里

使用decodeURI(str)anddecodeURIComponent(str)获取原始字符串。

这件事是那些方法将 url 中禁止的特殊字符替换为转义字符串,例如&become &amp;

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

注意:如果thisFileNode.Value是 URL 或打算插入 URL,这是相关的。

您可能还需要(或相反)转义引号等,这可能会被 javascript 本身误解。我不是 .Net 专家,但HttpUtility.JavaScriptStringEncode应该做的伎俩。您不需要解码您的字符串,因为它精确地允许您设置 javascript string 。

于 2013-08-27T12:54:53.760 回答