2011-10-17 53 views
0

我试图将文本传递给我的JavaScript函数,如下所示。将文本编码为JavaScript函数

hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName + "')"; 

我的第二个参数包含任何带有重音,特殊字符的文本。但是当我使用我的JavaScript函数时,文本被破坏了。 任何人有任何提示给我?

+2

你可以在C#和JS中显示文本的样子吗?在C#中的 – Tetaxa 2011-10-17 13:08:45

+0

是'Assento paraBebês',在JS中显示我Assentos%20para%20beb%C3%83 .... – mcamara 2011-10-17 13:13:32

回答

1

而不是<asp:HyperLink>尝试有这样的事:

<a id="hplDetails" runat="server">Text here</a> 

然后用这样的代码分配它的URL:

hplDetails.Attributes["href"] = "URL here....."; 

希望这不会弄乱你的特殊字符。

1

ASP.NET正在编码NavigateUrl属性。

在你的js函数中使用decodeURI

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) + "')";