2012-07-25 20 views
9

Creo un String en una vista y quiero mostrarlo en la pantalla.MVC Razor - Salida de texto en posición en la pantalla

Inicialmente probé Response.Write pero, debido a razones explicadas en otras partes de este sitio, el contenido apareció en la parte superior de la página. Entonces intenté dar salida a la cadena usando @ como lo siguiente: @myString.

Esto funcionó, ya que produjo el texto en el lugar correcto pero escapó de los enlaces HTML que había puesto ahí. ¿Cómo puedo solucionar este problema?

+0

Hasta que marque cualquiera de la respuesta como una respuesta que se va a conseguir mismas respuestas más :) – VJAI

Respuesta

18

Puede utilizar Html.Raw():

@Html.Raw(MyStringVar) 
+0

Gracias por la respuesta. Esto me ayudó a resolver el problema :) –

3

En lugar de cadena que se desea utilizar:

@{ 
    var myString = new MvcHtmlString("<tags>Text</tags>"); 
} 

Luego, cuando se la procesa en línea:

@myString 

, se mostrará el valor correcto en lugar de texto escapado.

Editar: Alternativa

La otra opción es que sólo puede crear la línea MvcHtmlString lo que hace adecuadamente.

@(new MvcHtmlString(myString)) 
+2

o incluso mejor '@ MvcHtmlString.Create (miCadena)' 'La – Silvermind

+0

@Silvermind MvcHtmlString.Create' hace realmente única' nueva MvcHtmlString' ... pero estuvo de acuerdo en que la sintaxis se vuelve más clara en las vistas de Razor. Consulte https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/MvcHtmlString.cs#L22 –

3

Puede utilizar la función Html.Raw para este

Por ejemplo:

@Html.Raw(Model.YourString) 
2

Usted puede hacerlo de esta manera:

@Html.Raw(myString) 
3

@Model miCadena

@ Html.Raw (Modelo)

Trate @ Html.Raw (miCadena).

No recomiendo hacer esto. No envíe resultados html a la pantalla por varias razones. si desea colocar el texto en cierta parte de la pantalla, use el estilo html/css en la vista y envíe solo la salida.

+0

Hay instancias como controles de usuario basados ​​en ayudantes de HTML en los que desea enviar HTML directamente a la pantalla. En general, estoy de acuerdo con usted, pero una arquitectura actual que estoy elaborando tiene enormes necesidades para los controles de usuario básicos y la representación directa de HTML. Así que soy un poco menos rápido para juzgar a otra persona por querer presentar HTML en línea (aunque hay mejores formas de realizar esta tarea para esta pregunta, pero quién sabe por qué deben hacerlo). – VulgarBinary

Cuestiones relacionadas