2010-03-16 1 views
2

Le titre n'était probablement pas très clair. Considérez ce scnerio: vous avez un site de blog ou tout simplement un site où un utilisateur peut répondre via un commentaire. Vous voulez conserver la mise en forme pour les commentaires. Les paragraphes doivent donc être séparés, la première phrase doit être en retrait, les mots-clés autorisés, etc. Comment procéder?Comment maintenir la mise en forme des commentaires lorsque je les enregistre dans la base de données dans une application mvc asp.net?

Ceci est quelque chose à peu près tous les types de sites de blogs, y compris ce site. Ma première estimation est que les commentaires sont enregistrés dans cette base de données au format xml ou en tant que HTML brut. Ce sont vraiment mes seules suppositions. Je suppose que les chaînes magiques pourraient être utilisées pour indiquer le début et la fin de divers formatages, mais les chaînes magiques sont généralement mal vues. Je le fais dans une application mvc asp.net. J'utilise la version 1 de mvc, mais je serais prêt à passer à 2 si cela rend la solution facile ici.

Répondre

1

Réponse courte: Regardez dans Markdown. Réponse plus longue: La mise en forme du texte est conservée lorsqu'elle est validée dans une base de données, mais n'apparaît pas correctement lorsqu'elle est affichée dans une page Web sauf si les éléments de formatage tels que les retours chariot et les retours à la ligne sont convertis au format HTML. .

+1

Des réflexions sur la détection exacte du retour et du saut de ligne du chariot se trouvent dans une zone de texte/zone de texte lorsque le commentaire est soumis? ASP.NET MVC va lier le CommentText à mon objet Comment lors de la soumission, donc je crains que je vais juste obtenir un paragraphe condensé de texte sans formatage sur le serveur. – jason

+0

Si vous entrez des commentaires dans une zone de texte multiligne (comme je le fais en ce moment) et que vous incluez CRLF en tapant enter, ce sera dans la valeur affichée sur le serveur. Si vous liez ce texte à un objet, le CRLF sera là, et vous le verrez si vous replacez le texte dans une zone de texte, mais pas si vous l'alimentez en HTML ... Vous pouvez également regarder dans un riche éditeur de texte comme FCKEditor si vous êtes concerné par le formatage. –

0

Ceci est vraiment spécifique à l'implémentation, mais il est plus que probable qu'ils stockent le code html brut ou utilisent des chaînes magiques. Et les chaînes magiques ne sont pas vraiment désapprouvées, en particulier dans certains scénarios (forums de discussion comme phpBB utilisant par exemple BBCode) où vous protégez les utilisateurs qui consultent les informations autant que les empêchant de pirater votre base de données ou site web.

0

Votre approche me semble faisable. Je tiens cependant à souligner qu'avant de sauvegarder du code HTML dans une base de données, il faut le nettoyer.

Vous aurez besoin du code vraiment paranoïaque pour enlever les bits méchants quelques scélérats insistent sur le fait d'essayer de poster sur ...

une approche pourrait consister à convertir des balises HTML juridiques pour marquer vers le bas (comme une autre réponse indique) et la bande le reste impitoyablement!

0

Voici ce que je fais. J'utilise Jeff's Sanatize Code (dans ASP.NET MVC Html.Helper). Le code est enregistré dans la base de données au fur et à mesure que l'utilisateur l'écrit, mais il est affiché sur l'écran avec la sanatize en place.

0

Si vous voulez quelque chose comme cet éditeur de texte que nous utilisons, allez à http://wmd-editor.com/. Configurez-le pour afficher Markdown et enregistrer dans la base de données. Si vous avez besoin de plus de puissance, vous pouvez utiliser FCKEditor, CKEditor (nouveau FCKEditor), http://ckeditor.com/, c'est très facile à configurer et ils mettront un éditeur javascript WYSIWYG sympa sur votre page et vous enregistrerez du HTML dans votre base de données. Un inconvénient est que vous devrez prendre soin des utilisateurs malveillants avec des attaques javascript comme les scripts inter-sites. Vous devez nettoyer l'entrée de l'utilisateur avant de l'enregistrer dans la base de données.

Microsoft a publié http://antixss.codeplex.com/ AntiXSS qui devrait aider à désinfecter l'entrée utilisateur.

Questions connexes