在asp.net MVC视图引擎上下文中,<%>>和<%:%>有什么区别。在MVC2书中给出如下:查看模板代码标签 - asp.net mvc - regd
- <%>代码块在View模板呈现时执行代码。
- <%:%>代码块执行其中包含的代码,然后将结果呈现给模板的输出流。
何时使用第一个和何时使用第二个?
在asp.net MVC视图引擎上下文中,<%>>和<%:%>有什么区别。在MVC2书中给出如下:查看模板代码标签 - asp.net mvc - regd
何时使用第一个和何时使用第二个?
这本书几乎是正确的:当查看模板呈现
<% %>
代码掘金执行代码。所以如果你打电话给函数<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
或任何其他评估为字符串的代码块的某些属性的引用。