〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
2013-10-13 10:53
204 查看
有很长时间没来 CSDN 的博客了。今天在社区里看到一个网友提问关于 asp.net 中“<%# %>” 的问题,所以还是想把这篇文章发到自己的博客上。虽然不是非常很高深的问题,但是还是应该多加留意……
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>”。也就是说,<%= %> 应早于 <%#%>,先被“翻译”出来……
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>”。也就是说,<%= %> 应早于 <%#%>,先被“翻译”出来……
相关文章推荐
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- asp.net 〈%# 〉与〈%=〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 〈%# 〉与〈%= 〉的区别,显示数据与绑定数据
- 关于使用asp.net 的分页显示数据。Repeater绑定数据后的分页显示。
- Asp.net中在GridView数据绑定事件中改变显示内容要注意的问题
- SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式)
- WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)
- MVC/MVP/MVVM区别——MVVM就是angular,视图和数据双向绑定
- GridView中绑定DropDownList并用DropDownList显示对应字段数据;
- WPF程序设计指南第23章数据绑定第一个例子,我修改了下,更能直接看出效果和区别
- GET请求和POST请求有什么区别?GET请求的参数在URL的问号后面显示,而POST参数不在URL上;POST可以比GET请求更大的数据…一般的回答都是这样。 但是作为一个高端大气上档次的程序
- ASP.NET 2.0 的数据绑定控件概述与区别(GridView、DetailsView、FormView 、Repeater、DataList)
- 使用DataTable绑定DataGridView后,鼠标点击DataGridView控件时才会显示数据?
- ASPxGridView的数据绑定显示
- 在WinForm 开发中经常用到ListView控件绑定显示DataTable数据,下面记录下主要代码:
- dropdownlist绑定不了数据只显示System.Data.DataRowView[zhuan]
- Web中DataGrid绑定数据显示列可拖动
- winform,DataGridView绑定数据后更改列属性、动态创建(用一个控件显示多表适用)