<%# ... %>和 <%= ...%> 的区别在哪里? 本来应该找Google问这个问题的,可是它居然不接受这些字符。<%# ... %>和 <%= ...%> 的区别在哪里?什么时候用<%# ... %>,又是什么时候用<%= ...%>?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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对< 角号进行了过渡,所以我才回答你的问题。其实这是比较基础的东东,用时间长了,会就比较好的理解了 <%# ... %> 用于数据绑定<%= ...%> 表达式 Google 是不接受,但是CSDN接受啊,混CSDN要会用它的论坛搜索功能,虽然目前做得并不是很好http://topic.csdn.net/u/20070915/23/d82c6f8e-a25c-43e1-ac41-e4d299b8329e.html 呵呵 1楼说的够详细了~~~~<%# %>这个需要 根GRIDview一样 需要 .databind() 一下才能绑定上~~~~~~~~~ 1楼说的不错,总结一下就是:<%#%>是在绑定时进行的赋值操作.(用于后台给前端赋值,一般用于数据绑定)<%=%>是在绑定前就进行的输出操作.(用于前端从后台读值)我的理解,呵呵~ <%#%>、<%=%>都用于前台取值。差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。<%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。两种用法楼主试试自然就知道了。 <%#%>、<%=%>都用于前台取值。差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。<%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。两种用法楼主试试自然就知道了。 什么破csdn。发个贴。竟然出现发出两遍的。。 在额外给你介绍一个进行绑定特殊区域的数据<%$ ... %> 他是用于绑定Web.Config文件中 AppSetints节点中的数据的.....例如<appSettings> <add key="Test" value="编程快乐" /></appSettings><asp:TextBox ID="TextBox1" runat="server" Text="<%$ AppSettings;Test %>" ></asp:TextBox> <%# ... %> 用于数据绑定 <%= ...%> 用于负值 <%# ... %> 和 <%= ...%> 的区别在哪里?都是用在前台HTML代码里面。<%#%>2003下面是用来绑定数据的,如<%#DataBinder.Eval(Container.DataItem,"ID")%>ID为从数据库中的一个字段或者dataTable中的字段,<%=Str%>Str是在后台CS文件中声明的变量,一般为一个全局的变量,也可以是后台的一个方法。<%#Eval("ID")%><%#Bind("ID")%> 2005下则是这两种形式了。 一知半解大体上主要的区别在于执行时机不同,<%= %>在Load时执行而<%# %>在DataBinding时执行。其次<%# %>用于数据绑定,不过这事实上还是与执行的时机有关系,在DataBinding之外执行某些数据绑定方法会出错,如GetDataItem及其相关方法。另外<%# %>代码块内有一个自动的Container对象,表示数据容器。最后<%= %>和<%# %>的实现机制差很远,如果想要详细了解看编译后的页面就知道了。对于固定的数据,<%= %>和<%# %>所实现的效果差不多,无非是执行的时机不同。 呵呵,这就是baidu,google的弊端了,不是所有东西都能上baidu,google。有事还要来CSDN。—————————————————————————octverve 已经说的很清楚了 <%# %>用于数据绑定<%= %>等号用于变量名称 viena )维也纳(wien 等 级: 发表于:2007-11-08 09:26:5918楼 得分:0 楼主也是以前混VB的朋友,很久不见了~ =================/握手 点打印按钮开新窗口显示水晶报表 哪位大侠可以推荐几本ASP.NET项目开发实战的经典书籍? 网站行为分析 如何获得一个List<someclass> 的第一项? 那个大哥会的帮帮我:生成sql 又连接不上数据库 *****************挑战性问题,关于c#调用c++dll的问题,请愚翁等高手帮忙***************** 求一MENU源码...... 如何让用户通过验证呢 DATAGRID的显示问题 分批显示分页 防止SQL注入的问题..
关于这个问题,在多数的 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对< 角号进行了过渡,所以我才回答你的问题。其实这是比较基础的东东,用时间长了,会就比较好的理解了
<%= ...%> 表达式
<%# %>这个需要 根GRIDview一样 需要 .databind() 一下才能绑定上~~~~~~~~~
<%#%>是在绑定时进行的赋值操作.(用于后台给前端赋值,一般用于数据绑定)
<%=%>是在绑定前就进行的输出操作.(用于前端从后台读值)
我的理解,呵呵~
差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。
<%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。
两种用法楼主试试自然就知道了。
差别在于<%#%>需要在后台进行绑定。见datalist绑定数据时,前台的写法,就可以很清楚的看到。
<%=%>需要在后台进行赋值。一般用于取后台的公共变量的值。
两种用法楼主试试自然就知道了。
例如
<appSettings>
<add key="Test" value="编程快乐" />
</appSettings><asp:TextBox ID="TextBox1" runat="server" Text="<%$ AppSettings;Test %>" ></asp:TextBox>
<%= ...%> 用于负值
都是用在前台HTML代码里面。
<%#%>2003下面是用来绑定数据的,如<%#DataBinder.Eval(Container.DataItem,"ID")%>ID为从数据库中的一个字段或者dataTable中的字段,<%=Str%>Str是在后台CS文件中声明的变量,一般为一个全局的变量,也可以是后台的一个方法。
<%#Eval("ID")%><%#Bind("ID")%> 2005下则是这两种形式了。
大体上主要的区别在于执行时机不同,<%= %>在Load时执行而<%# %>在DataBinding时执行。
其次<%# %>用于数据绑定,不过这事实上还是与执行的时机有关系,在DataBinding之外执行某些数据绑定方法会出错,如GetDataItem及其相关方法。
另外<%# %>代码块内有一个自动的Container对象,表示数据容器。最后<%= %>和<%# %>的实现机制差很远,如果想要详细了解看编译后的页面就知道了。对于固定的数据,<%= %>和<%# %>所实现的效果差不多,无非是执行的时机不同。
—————————————————————————octverve 已经说的很清楚了
<%= %>等号用于变量名称
)维也纳(wien
等 级:
发表于:2007-11-08 09:26:5918楼 得分:0
楼主也是以前混VB的朋友,很久不见了~
=================/握手