漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::


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属性。

posted on 2006-10-02 18:06  javaca88  阅读(215)  评论(0编辑  收藏  举报