ASP和ASP.NET中都有"<%=%>",用法也一样,但在ASP.NET中就是会出错.先看一段ASP的代码
<%
Function DisplayStr()
    '....'

    Response.Write 
"字符串"
End Function
%
>
<div><%= DisplayStr()%></div>
这样的代码在ASP中应该很常见,但把上面的代码改成ASP.NET的代码,用同样的方式调用的时候就会报错.
<script runat="server">
void DisplayStr()
{
    Response.Write(
"字符串");
}

<script>
<div><%= DisplayStr()%><div>
原因是因为在ASP.NET中使用<%=%>就等于使用HtmlTextWriter.Write方法,此方法的参数不允许以方法(函数)作为参数.这可能就是强类型语言和弱类型语言的差别吧.8-),这里要想让程序运行真确可以让Display()返回一个字符串.我不知道在ASP中"<%=%>"被编译成了什么,有知道的朋友可以告诉我一下.

看了大家的回复,觉得自己写的文章缺少可信度,所以决定把如何证明<%= %>就等于HtmlTextWrite.Write的过程写出来
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script language="c#" type="text/C#" runat ="server" >
        
public string DisplayStr()
       
{
           
return "显示字符串!";
       }
 
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div><%= "显示字符串!"%> </div>
    
<div><%= DisplayStr() %> </div>
    
</form>
</body>
</html>
上面是一个完整的页面,我们可以用Reflector反编译一下他生产的代码得到下面的结果

大家把红线圈起来的部分和源代码对比一下就能知道<%= %>表示什么了.

补充:<%= %>不能用在服务器控件的属性里面
1.<asp:Label ID="Label3" runat="server" Text="<%=DisplayStr()%>"></asp:Label>
2.<asp:Label ID="Label3" runat="server" Text="<%="文本框"%>"></asp:Label>  
3.  <asp:Label ID="Label3" runat="server" Text="田田田"><%=DisplayStr()%></asp:Label>
上面的第一种用法不会报错但,但得不到期望的值,会返回如下的结果.
<span id="Label3"><%=DisplayStr()%></span>
第二种用法会报错.
第三种用法是没有问题的,不过<%=DisplayStr()%>的值会覆盖Text="田田田",原因是因为编译的顺序不同,但Label3的Text的值任然是"田田田"

题外话:在ASP.NET中已经很少看到<%= %>了,因为有了新的替代产品<%# %>,看上去有几分相似,但在使用上比<%=%>方便,而且也更强大.具体的可以参考数据绑定相关的内容.