Кодировать текст в функцию JavaScript - PullRequest
0 голосов
/ 17 октября 2011

Я пытаюсь передать текст моей функции JavaScript, как показано ниже.

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

Мой второй параметр содержит любой текст с акцентами, специальные символы.Но когда я вхожу в свою функцию JavaScript, текст искажается.У кого-нибудь есть советы для меня?

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Вместо <asp:HyperLink> попробуйте такую ​​вещь:

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

Затем назначьте его URL с таким кодом:

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

Надеюсь, это не испортит ваши специальные символы.

1 голос
/ 17 октября 2011

Наличие такой полезной функции в классе, скажем, 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 ) + "')";
1 голос
/ 17 октября 2011

ASP.NET кодирует свойство NavigateUrl.

Используйте decodeURI в функции js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...