J'ai écrit une petite fonction JavaScript 'encodeMyHtml' qui est appelée sur l'événement OnClick lorsque le bouton d'envoi du formulaire HTML est cliqué. La fonction code l'entrée HTML de l'utilisateur pour le champ que j'ai spécifié dans une chaîne inoffensive avant qu'elle ne soit transmise au serveur. Quand je reçois cette entrée sur le serveur, je décrypte simplement et continue mon chemin.
ValidateRequest est heureux, nos utilisateurs sont heureux, nos pairs sont heureux, nous sommes heureux.
J'ajoute ma fonction JavaScript 'encodeMyHtml' dans la méthode OnPageLoad de mon contrôle utilisateur. De cette façon, je peux m'assurer que mon JavaScript n'est ajouté qu'une seule fois à la page parente, quel que soit le nombre de contrôles sur la page.
Dans mon OnPageLoad de contrôle Je l'appelle:
private void addEditorJavaScript()
{
// create our HTML encoder javascript function
// this way it shows up once per page that the control is on
string scr = @"<script type='text/javascript'>function encodeMyHtml(name){
var content = document.getElementById(name).value
content = content.replace(/</g,'<');
content = content.replace(/>/g,'>');
document.getElementById(name).value = content;
}</script>";
// add the javascript into the Page
ClientScriptManager cm = Page.ClientScript;
cm.RegisterClientScriptBlock(this.GetType(), "GlobalJavascript", scr);
}
Dans ASPX de mon contrôle, je suis sur un gridview. J'enveloppe la mise à jour de la grille grid: LinkButton dans une balise span, et dans cette balise span je mets mon OnClickEvent.
<span onclick="encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')">
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="[Publish]" />
</span><span onclick="encodeMyHtml('
Quand je reçois l'entrée du côté du serveur que j'appelle simplement quelques remplaceraient les méthodes sur la chaîne d'entrée pour décoder le HTML, et je suis fait.
Soumis à quoi? Vous devriez pouvoir mettre n'importe quelle valeur que vous voulez dans une boîte de texte par exemple. – recursive