查看模板代码标签 - asp.net mvc - regd

A_V*_*Var 5 asp.net-mvc templates view

在asp.net MVC视图引擎的上下文中,<%%>和<%:%>之间有什么区别.在MVC2书中,它给出如下:

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

何时使用第一个以及何时使用第二个?

Ale*_*ort 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或任何其他代码块的引用,该代码块的计算结果为string.