查看模板代码标签 - ASP.NET MVC - 注册

5
在ASP.NET MVC视图引擎中,<% %>和<%: %>有什么区别?在MVC2书中给出了以下解释:
- <% %>代码块在渲染视图模板时执行代码。 - <%: %>代码块执行其中包含的代码,然后将结果呈现到模板的输出流中。
何时使用第一个,何时使用第二个?
2个回答

7
这本书几乎是正确的: <% %> 代码块在视图模板渲染时执行代码。因此,如果您调用函数 <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())%> 相同。
---在最后两种情况下,MyFunc() 应返回一个字符串。它也可以是 ViewModel 的某个属性的引用或任何其他计算结果为字符串的代码块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接