什么时候应该在ASP.NET控件中使用#和=?

我一直在使用ASP.NET多年,但我永远不会记得使用#和=是否合适。

例如:

<%= Grid.ClientID %> 

要么

 <%# Eval("FullName")%> 

有人可以解释什么时候应该使用,这样我就可以保持直觉了吗? #仅用于支持数据绑定的控件吗?

无论你放置在哪里,<%=%>都等同于做Response.Write(“”)。

<%#%>用于数据绑定,只能在支持数据绑定的情况下使用(如果您在代码隐藏中调用Page.DataBind(),则可以在控件外部的页面级别使用这些数据绑定)

数据绑定expression式概述

有几个不同的“蜜蜂蜇”:

  • <%@ – 页面指令
  • <%$ – 资源访问
  • <%= – 显式输出到页面
  • <%# – 数据绑定
  • <%-- – 服务器端注释块

在ASP.Net 4中也是新的:

  • <%: – 写出到页面,但用HTML编码

这是Dan Crevier撰写的一篇很棒的博客文章,通过他写的一个testing应用程序来展示其差异。

在本质上:

  • <%=expression式在渲染时被评估
  • <%#expression式在DataBind()时计算,如果不调用DataBind(),则不计算。
  • <%#expression式可以用作服务器端控件的属性。 <%=expression式不能。