2012-07-25 19 views
9

Creo un String in una vista e desidero inviarlo allo schermo.Rasoio MVC - Uscita testo in posizione sullo schermo

Inizialmente ho provato Response.Write ma, a causa di ragioni spiegate altrove su questo sito, il contenuto è apparso nella parte superiore della pagina. Ho quindi tentato di emettere la stringa utilizzando @ in questo modo: @myString.

Questo ha funzionato, in quanto emette il testo nella posizione corretta ma sfugge ai collegamenti HTML che ho inserito. Come faccio a risolvere questo problema?

+0

Finché si contrassegna qualsiasi della risposta come una risposta che si sta per ottenere stesse risposte di più :) – VJAI

risposta

18

È possibile utilizzare Html.Raw():

@Html.Raw(MyStringVar) 
+0

Grazie per la risposta. Questo mi ha aiutato a risolvere il problema :) –

3

Invece di stringa che si desidera utilizzare:

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

Poi, quando si esegue il rendering in linea è:

@myString 

Sarà visualizzare il valore corretto al posto del testo sfuggito.

Edit: Alternative

L'altra opzione è che si può semplicemente creare la linea MvcHtmlString in modo che rende in modo appropriato.

@(new MvcHtmlString(myString)) 
+2

o meglio ancora '@ MvcHtmlString.Create (myString)' – Silvermind

+0

@Silvermind Il 'MvcHtmlString.Create' in realtà fa solo' nuova MvcHtmlString' ... ma concorda che la sintassi diventa più pulita nelle visualizzazioni Razor. Vedi https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/MvcHtmlString.cs#L22 –

3

È possibile utilizzare la funzione Html.Raw per questo

Ad esempio:

@Html.Raw(Model.YourString) 
2

che si possa fare in questo modo:

@Html.Raw(myString) 
3

@model myString

@ Html.Raw (Modello)

Prova @ Html.Raw (myString).

Non è consigliabile farlo. Non si invia l'output HTML sullo schermo per vari motivi. se si desidera inserire il testo in una determinata parte dello schermo, utilizzare lo stile html/css nella vista e inviare solo l'output.

+0

Ci sono casi come i controlli utente basati su helper HTML in cui si desidera inviare HTML direttamente sullo schermo. In genere sono d'accordo con te, ma un'architettura attuale che sto elaborando ha enormi esigenze per i controlli utente di base e il rendering HTML diretto. Quindi sono un po 'meno veloce nel giudicare qualcun altro per voler rendere inline HTML (anche se ci sono modi migliori per eseguire questa attività per questa determinata domanda, ma chissà perché devono farlo). – VulgarBinary

Problemi correlati