我正试图将文本传递给我的JavaScript函数。
hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName + "')";
我的第二个参数包含带重音符号,特殊字符的任何文本。但是当我进入我的JavaScript函数时,文本被破坏了。 有人对我有任何提示吗?
答案 0 :(得分:1)
ASP.NET正在编码NavigateUrl
属性。
在js函数中使用decodeURI。
答案 1 :(得分:1)
而不是<asp:HyperLink>
尝试这样的事情:
<a id="hplDetails" runat="server">Text here</a>
然后使用以下代码分配其URL:
hplDetails.Attributes["href"] = "URL here.....";
希望这不会弄乱你的特殊角色。
答案 2 :(得分:1)
在一个名为StringUtil
的类中使用这样的实用函数:
public static string JsEncode(string text)
{
StringBuilder safe = new StringBuilder();
foreach (char ch in text)
{
// Hex encode "\xFF"
if (ch <= 127)
safe.Append("\\x" + ((int)ch).ToString("x2"));
// Unicode hex encode "\uFFFF"
else
safe.Append("\\u" + ((int)ch).ToString("x4"));
}
return safe.ToString();
}
...意味着您可以将值编码为安全的JavaScript编码字符串:
hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + StringUtil.JSEncode( ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName ) + "')";