2009-08-20 5 views
2

Je rencontre un petit problème lors de l'implémentation d'un WebControlAdapter personnalisé pour le bouton. Je suis en suivant le modèle de portes coulissantes à la sortie le code HTML suivant:Bouton personnalisé WebControlAdapter IE7 Problème

<button value="submit" name="Button1" id="Button1" type="Submit" onclick="__doPostBack('Button1','')"><span>Button</span></button> 

en place de la norme:

<input id="Button1" type="submit" value="Button" name="Button1"/> 

Cela se fait (entre autres) de sorte que le bouton redimensionne en fonction de la texte contenu en son sein, donc pas uniquement pour des raisons esthétiques. Cette méthode fonctionne bien dans tous les navigateurs sauf IE7 et je suppose plus tôt (IE8 fonctionne bien). J'ai tracé le problème au fait IE7 postsback le contenu de l'élément de bouton par opposition à la valeur. Cela signifie que la balise span est retournée, provoquant ASP.NET à lancer un:

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (Button1="<SPAN>Button</SPAN>").] 

Le comportement correct. Je me rends compte que je peux désactiver ce comportement en utilisant la propriété Page.ValidateRequest. Toutefois, comme il s'agit d'une application existante, cela entraînera des changements majeurs sur chaque page pour protéger manuellement l'application contre les attaques de type Cross Site Scripting.

Est-ce que quelqu'un est au courant d'un moyen que je pourrais faire fonctionner pour IE7 et plus tôt?

Toutes les idées seraient appréciées.

Merci d'avance.

Répondre

1

Essayez d'ajouter validaterequest = false pour marquer sur la page ASPX. Espérons que cela fonctionne

+0

Merci Pranali mais je suis au courant ValidateRequest (dernier paragraphe de mon article). Cependant la désactivation qui créera une vulnérabilité de sécurité inacceptable (à plus long terme, je peux empêcher manuellement les attaques XSS, mais à court terme, c'est un travail trop important). Merci pour votre réponse de toute façon, je vais continuer à chercher ... –