2010-09-14 2 views
5

В чем разница между <%% и <%:%> в контексте asp.net MVC view engine. В книге MVC2 указано следующее:просмотреть теги кодов кода - asp.net mvc - regd

  • <%%> Наборы кода выполняются, когда визуализуется шаблон просмотра.
  • <%:%> самородки кода выполняют код, содержащийся в них, а затем выводят результат в выходной поток шаблона.

Когда использовать первую и когда использовать вторую?

ответ

7

Книга почти правильно:

<% %> код самородков выполнить код, когда шаблон View делает. Поэтому, если вы поместили вызов функции <div><% MyFunc() %></div>, ваша функция будет выполнена во время рендеринга после открытия тега, если div был визуализирован, но перед тем, как закрыть тег, был визуализирован. Функция может делать все, что угодно, проверять некоторые условия и сбой с исключением, устанавливать некоторые переменные, использовать HttpContext.CurrentContext.Response.Write (или просто Response.Write в webforms) для записи в поток ответов.

<%: %> код самоцвета выполняет код, содержащийся в них, а затем визуализирует результат html закодирован в выходной поток шаблона. то есть он такой же, как <% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%>

<%= %> код самородков выполнить код, содержащийся в них, а затем делают результат без HTML кодирования в выходной поток шаблона. т.е. это то же самое, что и <% HttpContext.CurrentContext.Response.Write(MyFunc())%>

--- В последних двух случаях MyFunc() должен возвращать строку. Он также может быть ссылкой на некоторое свойство ViewModel или любого другого самородка кода, который оценивает строку.

Смежные вопросы