2011-12-14 45 views
5

Tengo un editor de texto, después de aplicar el formato al texto, aparece el texto cuando se hace clic en un botón. Quiero que el texto se muestre con todo el formato aplicado en el editor de texto.Cómo mostrar un texto (formato Html) en un sitio web (Asp.net C#)

lbl_Subject.Text = Server.HtmlEncode(formattedtext); 

pero no se muestra en el formato aplicado en cambio, se muestra como

<p> This is Para 1</p> <p> this is Para 2</p> <p> <strong>this is bold</strong></p> 

cómo puedo mostrar el texto con todo el formato aplicado en el editor de texto

actualización he intentado con literal

el resultado es

&lt;p&gt; This is Para 1&lt;/p&gt; &lt;p&gt; this is Para 2&lt;/p&gt; &lt;p&gt; &lt;strong&gt;this is bold&lt;/strong&gt;&lt;/p&gt; 

Respuesta

8

utilice div en lugar de etiqueta.

div1.InnerHtml=formattedtext; 
1

Es posible que desee utilizar un control literal en lugar de una etiqueta. Esto debería tomar su cadena HTML sin procesar y enviarla como se requiere en la página.

ASESOR: Sea muy, muy cuidadoso al mostrar HTML como este. No es difícil agregar scripts maliciosos, por ejemplo, que se ejecutarán desde la página vista.

+0

1 Por favor especificar el modo = "Encode". – adatapost

6

HtmlEncode se asegura de que el texto es muestran correctamente en el navegador y no interpretado por el navegador como HTML.

Intente eliminar HtmlEncode o utilizando HtmlDecode.

+1

'Server.HtmlDecode (Server.HtmlEncode (formattedtext))' parece un poco tonto, pero tal vez sea solo yo. –

1

Si desea que el texto se muestre como html en el navegador, ¿por qué está HtmlEncoding it? HtmlEncode está destinado a tomar el código que potencialmente tiene símbolos html y codificarlo para que esos símbolos se impriman como texto sin formato. Diría que el código que presentó se comporta exactamente como se espera que se comporte. Si desea que su código muestre html para ser renderizado, entonces debe ser con un literal y simplemente debe ser texto.

lit_Subject.Text = formattedtext; 
0

Eche un vistazo a AntiXssLibrary (se puede encontrar a través de nuget).

Especialmente en la clase Sanitizer. Toma una cadena y elimina todos los elementos relacionados con la seguridad.

cambiará también los nombres de las clases CSS, por lo que es posible que deba retocar los resultados para restaurar los nombres de las clases. Pero definitivamente te permite obtener HTML sin procesar de forma segura en tu página, sin arriesgar los ataques XSS.

0

Puede utilizar este código: Html.Raw(formattedtext)

Cuestiones relacionadas