2011-01-26 2 views
25

Ho il seguente helper HTML personalizzato in asp.net MVC 3Perché il mio helper HTML personalizzato risulta codificato in html?

public static string RegisterJS(this HtmlHelper helper, ScriptLibrary scriptLib) 
{ 
    return "<script type=\"text/javascript\"></script>\r\n"; 
} 

Il problema è che il risultato è sempre HTML codificato in questo modo (ho dovuto aggiungere gli spazi per ottenere in modo di mostrare il risultato corretto :

&lt;script type=&quot;text/javascript&quot;&gt;&lt;/script&gt; 

questo, ovviamente, non è di grande aiuto per me .. niente che ho letto dice nulla di questo .. qualche idea su come posso ottenere il mio vero risultato di nuovo

risposta

37

si sta chiamando? l'aiutante in un blocco Rasoio @ o un Blocco ASPX <%: %>.
Questi costrutti sfuggono automaticamente all'output.

è necessario modificare l'assistente per restituire un HtmlString, che non sarà sfuggito:

return new HtmlString("<script ..."); 
+2

Grazie. È un cambiamento in 3? Anche l'esempio di MS ho trovato una stringa appena restituita .. –

+0

@Shane: No; è una funzionalità del motore di visualizzazione. – SLaks

+1

Si potrebbe guardare un esempio da MVC1. In MVC 2 tutti gli helper sono stati modificati per restituire un HtmlString in modo che la funzione di codifica automatica ASPX di .NET 4 possa funzionare (utilizzando '<%: %>' invece di '<%= %>'). Il nuovo motore di visualizzazione Razor codifica automaticamente tutto. – marcind