2010-09-14 54 views
5

在asp.net MVC视图引擎上下文中,<%>>和<%:%>有什么区别。在MVC2书中给出如下:查看模板代码标签 - asp.net mvc - regd

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

何时使用第一个和何时使用第二个?

回答

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或任何其他评估为字符串的代码块的某些属性的引用。