46 votes

Est-il possible d'afficher du HTML brut à partir d'une base de données dans ASP.NET MVC 3?

J'ai une table dans ma db où l'une des propriétés est une page Html (sans le html, head et body balises), et j'ai l'intention de le mettre dans le milieu de l'un de mes points de vue - dire, je l'appelle un cotroller méthode qui prend un argument, et le retour d'une vue sur le passage de cette html grosse chaîne en tant que modèle. J'ai cherché (pas beaucoup, je l'avoue), et a trouvé la méthode suivante:

<%= System.Web.HttpUtility.HtmlDecode(yourEncodedHtmlFromYouDatabase) %>

Qui a été trouvé ici, dans stackoverflow. Quand j'ai essayé une semblable rasoir arrivée, j'ai fini avec ceci:

@System.Web.HttpUtility.HtmlDecode("<h1>Test</h1>")

C'est l'idée, mais il ne fonctionne pas tout à fait comme je l'avais prévu.

96voto

Bennor McCarthy Points 6588

Tous vous avez besoin est: @Html.Raw(yourEncodedHtmlFromYouDatabase)

Je suis en supposant que le code html dans la base de données a été nettoyé correctement (ou au moins à partir d'une source fiable), parce que sinon, vous pourriez être l'ouverture de cross-site scripting attaques.

La raison de votre approche ne fonctionne pas, c'est que le Rasoir HTML-code de sortie par défaut (chaque fois que vous utilisez @ d'afficher quelque chose). Html.Raw dit Rasoir que vous avez confiance en la HTML et que vous souhaitez l'afficher sans codage (comme c'est déjà le HTML brut).

12voto

LiamB Points 7105

Vous pouvez également renvoyer une chaîne HTML et Razor affichera la mise en forme correcte, par exemple.

 @Html.GetSomeHtml()

public static HtmlString GetSomeHtml()
{
    var Data = "abc<br/>123";
    return new HtmlString(Data);
}
 

Cela vous permettra d'afficher du HTML

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X