2011-01-26 21 views
25

Tengo la siguiente ayuda HTML personalizado en asp.net mvc 3¿Por qué mi HTML Custom Helper resulta codificado en html?

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

El problema es que el resultado es conseguir HTML codificado como tal (he tenido que añadir espacios para conseguir así que para mostrar el resultado correctamente :

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

obviamente, esto no es de mucha ayuda para mi .. nada de lo que he leído dice nada sobre esto .. alguna idea de cómo puedo conseguir mi verdadero resultado de nuevo

Respuesta

37

Estás llamando? el ayudante en un bloque Razor @ o un ASPX <%: %> bloque.
Estas construcciones escapan automáticamente a su salida.

Es necesario cambiar el ayudante de devolver un HtmlString, que no se escapó:

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

Gracias. ¿Es esto un cambio en 3? Incluso el ejemplo de MS que encontré acaba de devolver una cadena ... –

+0

@Shane: No; es una característica del motor de visualización. – SLaks

+1

Quizás esté viendo un ejemplo de MVC1. En MVC 2 todos los ayudantes se cambiaron para devolver un HtmlString para que la característica de autocodificación ASPX de .NET 4 pudiera funcionar (usando '<%: %>' en lugar de '<%= %>'). El nuevo motor Razor view codifica automáticamente todo. – marcind

Cuestiones relacionadas