代码之家  ›  专栏  ›  技术社区  ›  A_Var

查看模板代码标记-ASP.NET MVC-REGD

  •  5
  • A_Var  · 技术社区  · 15 年前

    在ASP.NET MVC视图引擎的上下文中,<%%>和<%:%>之间的区别是什么?在MVC2手册中,给出如下:

    • <%%>代码块在视图模板呈现时执行代码。
    • <%:%>代码块执行其中包含的代码,然后将结果呈现到模板的输出流。

    什么时候用第一个,什么时候用第二个?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Alex Reitbort    15 年前

    这本书几乎是正确的:

    <% %> 代码块在视图模板呈现时执行代码。所以如果你打电话来 <div><% MyFunc() %></div> 如果呈现了DIV,则在呈现开始标记之后,但呈现结束标记之前,将在呈现时间执行You函数。函数可以做任何您想做的事情,检查某些条件并异常失败,设置一些变量,使用 HttpContext.CurrentContext.Response.Write (或者只是 Response.Write 在webforms中)写入响应流。

    <%: %> 代码块执行其中包含的代码,然后呈现结果 HTML编码 到模板的输出流。也就是说,它与 <% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%>

    <%= %> 代码块执行其中包含的代码,然后呈现结果 不使用HTML编码 到模板的输出流。也就是说,它与 <% HttpContext.CurrentContext.Response.Write(MyFunc())%>

    ---在最后两种情况下,myfunc()应返回一个字符串。它也可以是对 ViewModel 或计算为字符串的任何其他代码块。