2009-10-21 9 views
0

J'ai une série de contrôles sur une page ASP. Certains sont dans un UpdatePanel et d'autres non.Balises XML dans ASP: TextBox empêche les autres contrôles de fonctionner?

Si je place une balise XML dans l'une des zones de texte (par exemple, "<foo>") alors tous les contrôles dans le UpdatePanel ne fonctionnent pas. Dès que les tags sont supprimés, tout va bien.

Mon bouton « submit » est dans le UpdatePanel et le point d'arrêt sur btnSubmit_Click est frappé seulement quand il n'y a pas de balises dans les zones de texte.

Je suis un long temps C# dev, mais tout à fait nouveau pour ASP.NET pourrait donc manquer quelque chose d'évident ... ce n'est pas le comportement que je pense.

+0

Ok, donc les étiquettes ne sont pas autorisés. (Par exemple, « ») devrait lire (par exemple, [opentriangularbracket] foo [closetriangularbracket]) –

Répondre

1

Si vous supprimez le UpdatePanel de la page, vous constaterez que la publication a provoqué une erreur car .NET pense que "<foo>" est un bit de données potentiellement dangereux à accepter sur le serveur. Voir this question sur StackOverflow. Vous ne voyez pas l'erreur car la page d'erreur HTML est renvoyée à l'appel ajax du UpdatePanel plutôt que directement à votre navigateur, et le UpdatePanel ne sait pas quoi faire avec.

Vous pouvez désactiver la vérification en ajoutant

ValidateRequest="false" 

à la directive < @Page ...> en haut de votre fichier ASPX. Vous pouvez également modifier le fichier web.config pour obtenir le même effet sur l'ensemble de votre application Web.

+0

Qui l'a trié. Merci beaucoup! –

0

Vous ne pouvez pas mettre le balisage dans une zone de texte. Vous devez HTML-échapper tous les caractères de balisage à l'intérieur de textarea comme vous le devez avec n'importe quel autre élément.

<textarea>&lt;foo> &amp; &lt;bar></textarea> 

Bien que dans les navigateurs pratique travaillent habituellement ce que vous voulez dire et montrer des < caractères en l'état, il est toujours valide HTML et XML non bien formé (probablement c'est aussi la racine de votre problème en ASP .NET, mais sans code spécifique, c'est difficile à dire).

+0

Je pense qu'il veut dire qu'il est en train de taper la balise dans la zone de texte lorsque la page est en cours d'exécution, ce qui provoque alors la page d'arrêter de travailler jusqu'à ce que la balise est retiré. –

+0

Salut bobince, merci pour la réponse. Jason a raison, c'était au moment de l'exécution que le problème se posait (ce que je n'ai pas vraiment précisé). Toutes mes excuses mais merci encore. –