2011-01-26 3 views
25

У меня следующий пользовательский HTML помощник в ASP.NET MVC 3Почему мой пользовательский результат HTML Helper получает html-кодировку?

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

Проблема в том, что результат становится HTML кодируются как так (я должен был добавить пробелы, чтобы получить таким образом, чтобы показать результат правильно :

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

Это, очевидно, не очень поможет мне .. Я ничего не читал, ничего не говорит об этом .. какой-либо мысль о том, как я могу получить реальный результат обратно

ответ

37

вы звоните? помощник в блоке Razor @ или ASPX <%: %> блок.
Эти конструкции автоматически выходят за пределы их вывода.

Вы должны изменить помощник, чтобы возвращать HtmlString, который не будет сбежавшими:

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

Спасибо. Это изменение в 3? Даже в примере MS я нашел только что возвращенную строку. –

+0

@Shane: No; это особенность механизма просмотра. – SLaks

+1

Возможно, вы смотрите на пример из MVC1. В MVC 2 все помощники были изменены, чтобы вернуть HtmlString, чтобы функция автокодирования ASPX из .NET 4 могла работать (используя '<%: %>' вместо '<%= %>'). Новый механизм просмотра Razor автоматически кодирует все. – marcind