本来应该找Google问这个问题的,可是它居然不接受这些字符。
<%# ...  %>和 <%= ...%> 的区别在哪里?什么时候用<%# ...  %>,又是什么时候用<%= ...%>?
谢谢。

解决方案 »

  1.   

    aspx页面中, <%= % > 与  <%# % > 的区别 
    关于这个问题,在多数的 ASP.NET 的教材中,都提到了一些。 <%= % >与 <%# % >的区别在于:绑定时机不同, <%# % >是在控件调用DataBind函数的时候才被确定。对于 <%= % >,我想你应该不会陌生,在ASP时代,它就相当于 Response.Write。在ASP.NET时代也一样。暂时先不去理会教材中说的,也先把“绑定时机”放到一边。 <%= % >与 <%# % >的区别是:前者是输出,而后者是赋值!即:        <%= "A" % > 相当于:Response.Write("A");      <%# "A" % > 相当于:变量="A"; 先来看一个例子:   <html > <body > <asp:Button Text= <%# "Hello, the Internet!" % > RunAt="Server" ID="testButton" / > </body > </html >   这句话相当于赋值,把上面这个勾黑句子翻译成后台代码就是:testButton.Text="Hello, the Internet!"; 第二个例子:   <html > <body > <%= "Hello, the Internet!" % > <%# "Hello, the Internet!" % > </body > </html >   <%= "Hello, the Internet!" % > 就相当于:Response.Write("Hello, the Internet!"); 那么第二个 <%# % >怎么解释呢?如果按照我“赋值”的说法,它把值赋给谁了呢? 其实翻译成后台代码是这样的:(new System.Web.UI.LiteralControl()).Text="Hello, the Internet!";   一段文本,虽然它不被包含在任何开始结束标签之间,但是ASP.NET也认为它是一个控件。一个LiteralControl控件。所以, <%# % >就是把值赋给LiteralControl控件的Text属性。 我做过一个生成静态 HTML 代码的类,使用的手法是包装了 HtmlTextWriter 这个类。并且我做了跟踪调试。跟踪的结果令我感到很意外。ASP.NET 会把所有的未标有“runat=server”属性的标记,统统看作是一个 LiteralControl 控件。例如在上面那些 HTML 代码里,例如在文章开始处的那些 HTML 代码里,ASP.NET 会认为是有三个服务器控件,分别是:LiteralControl、Button、LiteralCtontrol。第一个 LiteralControl 的 Text 值为“ <html > <body >Hello, the Internet!”,而最后一个 LiteralControl 的 Text 值是“ </body > </html >”。也就是说, <%= % > 应早于  <%# % >,先被“翻译”出来
    ------------------------------------------------------------------------
    百度,Google对< 角号进行了过渡,所以我才回答你的问题。其实这是比较基础的东东,用时间长了,会就比较好的理解了
      

  2.   

    <%#   ...     %> 用于数据绑定
    <%=   ...%> 表达式
      

  3.   

    Google 是不接受,但是CSDN接受啊,混CSDN要会用它的论坛搜索功能,虽然目前做得并不是很好http://topic.csdn.net/u/20070915/23/d82c6f8e-a25c-43e1-ac41-e4d299b8329e.html
      

  4.   

    呵呵 1楼说的够详细了~~~~
    <%#   %>这个需要 根GRIDview一样 需要  .databind() 一下才能绑定上~~~~~~~~~
      

  5.   

    1楼说的不错,总结一下就是:
    <%#%>是在绑定时进行的赋值操作.(用于后台给前端赋值,一般用于数据绑定)
    <%=%>是在绑定前就进行的输出操作.(用于前端从后台读值)
    我的理解,呵呵~
      

  6.   

    <%#%>、<%=%>都用于前台取值。
    差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。
    <%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。
    两种用法楼主试试自然就知道了。
      

  7.   

    <%#%>、<%=%>都用于前台取值。
    差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。
    <%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。
    两种用法楼主试试自然就知道了。
      

  8.   

    什么破csdn。发个贴。竟然出现发出两遍的。。
      

  9.   

    在额外给你介绍一个进行绑定特殊区域的数据<%$ ... %> 他是用于绑定Web.Config文件中 AppSetints节点中的数据的.....
    例如
    <appSettings>
      <add key="Test"  value="编程快乐" />
    </appSettings><asp:TextBox ID="TextBox1" runat="server" Text="<%$ AppSettings;Test %>" ></asp:TextBox>
      

  10.   

    <%#       ...           %>   用于数据绑定 
    <%=       ...%>   用于负值
      

  11.   

    <%#   ...     %> 和   <%=   ...%>   的区别在哪里?
    都是用在前台HTML代码里面。
    <%#%>2003下面是用来绑定数据的,如<%#DataBinder.Eval(Container.DataItem,"ID")%>ID为从数据库中的一个字段或者dataTable中的字段,<%=Str%>Str是在后台CS文件中声明的变量,一般为一个全局的变量,也可以是后台的一个方法。
    <%#Eval("ID")%><%#Bind("ID")%> 2005下则是这两种形式了。
      

  12.   

    一知半解
    大体上主要的区别在于执行时机不同,<%= %>在Load时执行而<%# %>在DataBinding时执行。
    其次<%# %>用于数据绑定,不过这事实上还是与执行的时机有关系,在DataBinding之外执行某些数据绑定方法会出错,如GetDataItem及其相关方法。
    另外<%# %>代码块内有一个自动的Container对象,表示数据容器。最后<%= %>和<%# %>的实现机制差很远,如果想要详细了解看编译后的页面就知道了。对于固定的数据,<%= %>和<%# %>所实现的效果差不多,无非是执行的时机不同。
      

  13.   

    呵呵,这就是baidu,google的弊端了,不是所有东西都能上baidu,google。有事还要来CSDN。
    —————————————————————————octverve  已经说的很清楚了
      

  14.   

    <%# %>用于数据绑定
    <%= %>等号用于变量名称
      

  15.   

    viena 
    )维也纳(wien 
    等 级:
     发表于:2007-11-08 09:26:5918楼 得分:0 
    楼主也是以前混VB的朋友,很久不见了~ 
     =================/握手