J'essaie de passer un texte à ma fonction JavaScript comme ci-dessous.
hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName + "')";
Mon deuxième paramètre contient n'importe quel texte avec des accents, des caractères spéciaux. Mais quand j'arrive dans ma fonction JavaScript, le texte est mutilé. Quelqu'un a des conseils pour moi?
3 réponses
Au lieu de <asp:HyperLink>
, essayez d'avoir une telle chose:
<a id="hplDetails" runat="server">Text here</a>
Attribuez ensuite son URL avec un tel code:
hplDetails.Attributes["href"] = "URL here.....";
Espérons que cela ne gâchera pas vos personnages spéciaux.
ASP.NET code la propriété NavigateUrl
.
Utilisez decodeURI dans votre fonction js.
Avoir une fonction utilitaire comme celle-ci dans une classe appelée, disons 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();
}
... signifie que vous pouvez ensuite encoder les valeurs en tant que chaînes sécurisées, encodées en JavaScript:
hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + StringUtil.JSEncode( ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName ) + "')";
Questions connexes
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.