查看模板渲染<%=%>之间的差异和< %%>

时间:2009-06-30 14:43:39

标签: c# asp.net-mvc

以下内容摘自Professional ASP.NET MVC 1.0第56页。

  

当我们更仔细地查看Details.aspx模板时,我们会发现它包含静态HTML以及嵌入式渲染代码。 < %%>代码块在视图模板呈现时执行代码,并且<%=%>代码块执行其中包含的代码,然后将结果呈现给模板的输出流。

该声明本质上是有道理的,但我无法清楚地向团队成员阐明其含义。更准确地解释究竟发生了什么是有用的。

本章后面的用法示例:

<% foreach (var dinner in Model) { %>
    <li>
        <%= Html.Encode(dinner.Title) %>
        on
        <%= Html.Encode(dinner.EventDate.ToShortDateString())%>
        @
       <%= Html.Encode(dinner.EventDate.ToShortTimeString())%>
    </li>
<% } %>

1 个答案:

答案 0 :(得分:1)

基本上&lt; %%&gt;只是执行代码并且在&lt;%=%&gt;时输出任何内容为浏览器生成某种形式的输出。

例如,取&lt;%foreach(模型中的var晚餐){%&gt;。这一行只是意味着我们循环一个集合,如果项目必须有一些匹配的结束循环&lt;%}%&gt;使页面在语法上正确。由于这个循环本身没有任何东西发送到浏览器。

使用&lt;%= Html.Encode(dinner.Title)%&gt;完成向浏览器发送内容。这将获取晚餐标题,HtmlEncodes的内容,并将其写入响应流。