〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
2010-10-23 22:37
253 查看
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!";
一段文本,虽然它不被包含在任何开始结束标签之间,但是[font='Courier]ASP.NET[/font]也认为它是一个控件。一个[font='Courier]LiteralControl[/font]控件。所以,[font='Courier]<%# %>[/font]就是把值赋给[font='Courier]LiteralControl[/font]控件的Text属性。
我做过一个生成静态 HTML 代码的类,使用的手法是包装了 HtmlTextWriter这个类。并且我做了跟踪调试。跟踪的结果令我感到很意外。ASP.NET 会把所有的未标有“runat=server”属性的标记,统统看作是一个LiteralControl 控件。例如在上面那些 HTML 代码里,例如在文章开始处的那些 HTML 代码里,ASP.NET会认为是有三个服务器控件,分别是:LiteralControl、Button、LiteralCtontrol。第一个LiteralControl 的 Text 值为“<html><body>Hello, theInternet!”,而最后一个 LiteralControl 的 Text值是“</body></html>”。也就是说,<%= %> 应早于 <%#%>,先被“翻译”出来……
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kingboy2008/archive/2010/01/11/5176712.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!";
一段文本,虽然它不被包含在任何开始结束标签之间,但是[font='Courier]ASP.NET[/font]也认为它是一个控件。一个[font='Courier]LiteralControl[/font]控件。所以,[font='Courier]<%# %>[/font]就是把值赋给[font='Courier]LiteralControl[/font]控件的Text属性。
我做过一个生成静态 HTML 代码的类,使用的手法是包装了 HtmlTextWriter这个类。并且我做了跟踪调试。跟踪的结果令我感到很意外。ASP.NET 会把所有的未标有“runat=server”属性的标记,统统看作是一个LiteralControl 控件。例如在上面那些 HTML 代码里,例如在文章开始处的那些 HTML 代码里,ASP.NET会认为是有三个服务器控件,分别是:LiteralControl、Button、LiteralCtontrol。第一个LiteralControl 的 Text 值为“<html><body>Hello, theInternet!”,而最后一个 LiteralControl 的 Text值是“</body></html>”。也就是说,<%= %> 应早于 <%#%>,先被“翻译”出来……
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kingboy2008/archive/2010/01/11/5176712.aspx
相关文章推荐
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- asp.net 〈%# 〉与〈%=〉的区别,显示数据与绑定数据
- 数据绑定时 Eval 和 Bind 的区别
- CurrencyManager的使用(绑定数据到控件),数据分条显示
- 后台的一个值怎么数据绑定显示在前端页面
- WPF4数据绑定应用之“创建具有多种显示效果的字串”
- 关于GredView等数据显示控件的数据绑定
- 母版页中数据绑定控件不显示数据的问题
- 用List<T> 给 DataGridView 绑定数据时,无法正常显示
- Repeat控件绑定数据格式显示
- 我的ASPxGridView控件的数据是在后台绑定的,但是实现不了筛选和分页的功能,只能显示一页的数据?
- Dropdown 绑定数据,显示“请选择”
- ASPxGridview总结(ASPxGridView的增,删,改,查,数据绑定,外观显示,功能设定,分页)
- GridView数据绑定控件的模版列时设置显示的格式
- Web中DataGrid绑定数据显示列可拖动
- 工作总结 @Html.EditorFor @Html.TextBoxFor 表达式树 绑定显示日期格式数据
- Android布局设计之ExpandableList绑定XML数据构成级联、item布局页面的控件查找及配置child事件,自定义适配显示内容