【发布时间】:2010-09-14 23:10:42
【问题描述】:
和 在 asp.net MVC 视图引擎的上下文中有什么区别。在 MVC2 书中给出如下:
- 代码块在视图模板呈现时执行代码。
- 代码块执行其中包含的代码,然后将结果呈现到模板的输出流。
什么时候用第一个,什么时候用第二个?
【问题讨论】:
标签: asp.net-mvc templates view
和 在 asp.net MVC 视图引擎的上下文中有什么区别。在 MVC2 书中给出如下:
什么时候用第一个,什么时候用第二个?
【问题讨论】:
标签: asp.net-mvc templates view
这本书几乎是正确的:
<% %> 代码块在视图模板呈现时执行代码。因此,如果您调用函数<div><% MyFunc() %></div>,如果渲染了 div,但在渲染结束标签之前,您的函数将在打开标签之后的渲染时间执行。该函数可以做任何你想做的事情,检查一些条件并因异常而失败,设置一些变量,使用HttpContext.CurrentContext.Response.Write(或在网络表单中使用Response.Write)写入响应流。
<%: %> 代码块执行其中包含的代码,然后将结果 html 编码 渲染到模板的输出流。即它与<% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%> 相同
<%= %> 代码块执行其中包含的代码,然后将结果无需 html 编码渲染到模板的输出流。即它与<% HttpContext.CurrentContext.Response.Write(MyFunc())%> 相同
---MyFunc() 在最后两种情况下应该返回一个字符串。它也可以是对ViewModel 的某些属性或任何其他计算为字符串的代码块的引用。
【讨论】:
【讨论】: