J'ai un contrôle de zone de texte qui accepte une entrée. J'essaie de rendre plus tard ce texte dans une vue en utilisant simplement:
@ Model.CommentText
Il s'agit d'encoder correctement toutes les valeurs. Cependant, je veux remplacer les caractères de saut de ligne par <br />
et je ne trouve pas de moyen de m'assurer que les nouvelles balises br ne sont pas encodées. J'ai essayé d'utiliser HtmlString mais je n'ai pas encore eu de chance.
\n
dans la base de données et que vous souhaitez convertir en un<br />
?Réponses:
Utilisez la propriété CSS white-space au lieu de vous ouvrir aux vulnérabilités XSS!
la source
pre-line
(je ne connaissais quenowrap
etpre
).white-space: pre-wrap;
c'est mieux car vouspre-line
allez jouer avec votre texte en regroupant les espaces blancs en un seul espace.Essayez ce qui suit:
Mettre à jour:
Selon les
marcind's
commentaires sur cette question connexe , l'équipe ASP.NET MVC cherche à implémenter quelque chose de similaire au<%:
et<%=
pour le moteur de vue Razor.Mise à jour 2:
Nous pouvons transformer n'importe quelle question sur le codage HTML en une discussion sur les entrées utilisateur nuisibles, mais cela existe déjà.
Quoi qu'il en soit, prenez soin des entrées utilisateur potentiellement nuisibles.
Mise à jour 3 (Asp.Net MVC 3):
la source
<script>
.\n
au lieu de\r\n
Fractionnez sur les nouvelles lignes (indépendant de l'environnement) et imprimez régulièrement - pas besoin de vous soucier de l'encodage ou du xss:
(la suppression des entrées vides est facultative)
la source
La troisième solution d'Omar en tant qu'assistant HTML serait:
la source
En appliquant le principe DRY à la solution d'Omar, voici une extension HTML Helper:
Utilisation (avec regex amélioré):
Cela a également l'avantage supplémentaire de mettre moins de fardeau sur le développeur Razor View pour assurer la sécurité contre les vulnérabilités XSS.
Ma préoccupation avec la solution de Jacob est que le rendu des sauts de ligne avec CSS brise la sémantique HTML .
la source
J'avais besoin de briser du texte en paragraphes (balises "p"), j'ai donc créé un assistant simple en utilisant certaines des recommandations des réponses précédentes (merci les gars).
Usage:
la source
Je préfère cette méthode car elle ne nécessite pas de balisage à émission manuelle. J'utilise cela parce que je rend les pages Razor aux chaînes et les envoie par e-mail, qui est un environnement où le style d'espace blanc ne fonctionne pas toujours.
la source