ASP.net MVC 3 могу ли я заменить все <% = в моих представлениях на <%:?

У меня есть сайт MVC 3, используя asp.net 4

по моему мнению, я использовал <%= для вывода данных.

читая этот пост Фила Хака -> http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

Он предполагает, что <% = должно быть удаленной памятью, если вы используете.net 4.

я сделал поиск и заменил все, на одном из моих взглядов, заменяющих

<%= to <%:

и все работает как обычно.

так что мой вопрос, могу ли я пойти дальше и сделать глобальную замену на все мои взгляды? Есть ли какие-либо проблемы, о которых нужно знать?

Truegilly

2 ответа

Решение

Будьте осторожны, как будто у вас есть что-то вроде этого:

<%= Html.Encode(Model.Foo) %>

вы можете получить двойное кодирование, когда получите:

<%: Html.Encode(Model.Foo) %>

Тогда как правильным будет:

<%: Model.Foo %>

Лично я склонен всегда использовать:

<%= Html.DisplayFor(x => x.Foo) %>

Так что это не так просто, как простой поиск и замена. Там могут быть некоторые критические модификации.

Все, что сказал Дарин и это:

После форматирования с HTML

Будьте внимательны, когда форматируете вывод, и добавляете в него немного HTML, как в

<%= this.Model.Explanation.Replace("\n", "<br/>") %>

Это явно не сработает после того, как вы просто замените <%= с <%:,

Другие вопросы по тегам