ASP.Net 中几种相似的标记符号: 解释及用法

常看到初学的朋友问此问题,原来认为问者懒,后来上Baidu查一下,原来百度不支持特殊符号查询(百度技术有待提高啊)

ASP.Net中几种相似的标记符号: <%=...%> <%#... %> <% %> <%@ %> 解释及用法

答: <%#... %>: 是在绑定控件DataBind()方法执行时被执行,用于数据绑定
如: <%# Container.DataItem("tit") %>


<%= %>: 在程序执行时被调用,可以显示后台变量值
如:
*.ASPx中: <%= aaa %>
*.cs中: public string aaa="姓名";


<% %>: 内联代码块里面可以在页面文件*.ASPx或*.ascx文件里面嵌入后台代码
如:
<%
for(int i=0;i<100;i )
{
Reaponse.Write(i.ToString());
}
%>


<%@ %>是在*.ASPx页面前台代码导入命名空间,
如:
<%@ Import namespace="System.Data"%>
 

在额外再介绍一个进行绑定特殊区域的数据 <%$   ...   %>   他是用于绑定Web.Config文件中   AppSetints节点中的数据的.....
例如
<appSettings>
    <add   key= "Test "     value= "编程快乐 "   />
</appSettings>

<asp:TextBox   ID= "TextBox1 "   runat= "server "   Text= " <%$   AppSettings;Test   %> "   > </asp:TextBox>
-----------------------------------------------

关于这个问题,在多数的 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 >”。也就是说, <%= % > 应早于  <%# % >,先被“翻译”出来……

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值