<%%>和<script runat=server> 都表示在服务器端运行的脚本,他们倒底有什么区别呀?
解决方案 »
- 如何让打开的窗体没有地址栏?
- 如何判断用户是不是第一次访问着个页面
- 如何控制AJAX calendarextender控件的宽度和高度?
- 急求一款正则表达式
- 极度郁闷,session中的对象无缘无故地消失了!!!200分
- 如何發布ASP.NET程序???
- repeater中的<ItemTemplate>中的label如何用类中的函数??
- 仿易迅左右移动的相册效果是如何实现的,想用JS实现,能不能给点指导
- asp.net在VS上可以访问数据库,但是在IIS上却访问不了数据库
- 这个求和的sq;怎么写?
- [求助] 用DataList嵌套实现网页顶端菜单的动态数据绑定
- asp.net2005 GridView 查找编辑的控件
<script runat=server > 是VS2005里专有的
关于这个问题,在多数的 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!";
lz 应该知道不仅aspx.cs中的代码要被编译,aspx中的代码也要被编译 ,aspx中会生成一个类继承与aspx.cs中的page类
public class aspxpageclass //aspx页面类它继承与aspx.cs里面的page类
{
//<script language=.. runat="server">中的代码会生成在,它所定义东西必须是这个类的字段或方法
<%%>下的代码会在一个 ___RenderForm1 的类成员函数里
private void __RenderForm1(System.Web.UI.HtmlTextWriter __output, System.Web.UI.Control parameterContainer) {
//这里是<% %>代码
}//以上是.net1.1下的 .net2.0 可能会有变化没有试过
<%% > 里的代码 是在 Render方法里.
<script runat=server > 里的函数直接定义在类的定义中.(这个类就是页面编译后生成的类).