<%: и <% = то же самое, как встраивают код (выражение) блоки

Только что запустив с MVC 2, я замечаю, что в их начинающем обрабатывают по шаблону, они используют

<%: Html.ActionLink("Home", "Index", "Home")%>

и я был уверен, что в MVC 1 это было

<%= Html.ActionLink("Home", "Index", "Home")%>

Действительно ли они - то же самое? Если так, почему изменение от знака "равно" до двоеточия.

36
задан Ralph Shillington 20 April 2010 в 15:10
поделиться

3 ответа

синтаксис двоеточия означает, что вы будете автоматически закодированы в HTML: http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

Они не могли просто html кодировать все существующие <% = блоки, потому что то, что уже правильно закодировано (что, надеюсь, есть в большинстве проектов), будет выглядеть странно.

42
ответ дан 27 November 2019 в 05:57
поделиться

ASP .NET 4 представил синтаксис <%:, который кодировал вывод перед отображением на экране. ASP MVC уже кодировал это, но, чтобы быть более точным, они также начали использовать синтаксис, чтобы прояснить, что всякий раз, когда вы видите <%:, вы можете быть уверены, что вывод будет правильно закодирован.

5
ответ дан 27 November 2019 в 05:57
поделиться

<%= используется для записи в выходной буфер.

<%: используется для записи в выходной буфер после HTML-кодирования содержимого... Если для возвращаемого объекта не реализован интерфейс IHtmlString.

У Скотта Гатри есть отличный пост на эту тему: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp -net-mvc-2.aspx

Если выходные данные уже экранированы, двойное кодирование можно предотвратить путем реализации интерфейса IHtmlString для возвращаемого объекта. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx

12
ответ дан 27 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: