在ASP.NET MVC视图引擎中,<% %>和<%: %>有什么区别?在MVC2书中给出了以下解释:
- <% %>代码块在渲染视图模板时执行代码。 - <%: %>代码块执行其中包含的代码,然后将结果呈现到模板的输出流中。
何时使用第一个,何时使用第二个?
- <% %>代码块在渲染视图模板时执行代码。 - <%: %>代码块执行其中包含的代码,然后将结果呈现到模板的输出流中。
何时使用第一个,何时使用第二个?
<% %>
代码块在视图模板渲染时执行代码。因此,如果您调用函数 <div><% MyFunc() %></div>
,则该函数将在渲染时间执行,在 div 标签呈现后但在关闭标签呈现前。该函数可以执行任何操作,检查一些条件并引发异常,设置一些变量,使用 HttpContext.CurrentContext.Response.Write
(或在 WebForms 中只需使用 Response.Write
)将其写入响应流。
<%: %>
代码块在执行其中包含的代码后,将编码为 HTML 的结果呈现到模板的输出流中。即它与 <% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%>
相同。
<%= %>
代码块在执行其中包含的代码后,将未经 HTML 编码 的结果呈现到模板的输出流中。即它与 <% HttpContext.CurrentContext.Response.Write(MyFunc())%>
相同。