我用VS2003做了一个asp.net页面,WebForm1.aspxz@page如下:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="MyDemo.WebForm1" Trace="true"%>
在WebForm1.aspx.cs中我定义了Page_Load方法,调试执行正常,然后我又在WebForm1.aspx中直接又写了一个Page_Load方法:
<script language="C#" runat="server">
public void Page_Load(Object src,EventArgs e)
{
Trace.Write("ok");
          }
</script>
我再执行这个页面时,却发现“ok”根本没有被显示,也就是说,aspx页面中的Page_Load根本没有被执行,但也没有出错!我想问一下高手,存在代码隐藏类文件(比如本例中的WebForm1.aspx.cs)时,还能不能再在页面中嵌入代码,并被正确执行?特别是如果出现相同的方法时?

解决方案 »

  1.   

    try把
    public void Page_Load(Object src,EventArgs e)
    {
    Trace.Write("ok");
              }放到后台文件:
    WebForm1.aspx.cs
    去执行.
      

  2.   

    <%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="Test.WebForm4" trace="true"%>trace="true"
      

  3.   

    8、使用trace方法和trace属性记录Page目录中网页的执行情况 
       
      调试程序的一种古老的技术是在程序中的关健点插入输出语句,通常情况下,输出信息中会包含重要变量的值,相关信息可以输出到屏幕、日志文件或者数据库。 
      在ASP.NET中,通过使用Page命令中的trace属性,这种调试技术的使用更简单了。Page命令是ASPX文件开始处的一行代码,它提供编译器的指示。Page命令中包含一个或多个属性,向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。 
      Page命令中的属性之一是trace,其值可能是true或false,下面是一个典型的Page命令,其中的trace属性的值是true: 
       
      <%@ Page language="c#" trace="true" %> 
       
      如果trace属性的值设置为true,由ASPX文件生成的Web页就会显示出来,除了网页本身外,关于该页的大量其他信息也会显示出来。这些信息以下面小节的形式显示在一张表格中: 
      ·Request细节 提供Session ID、请求时间和请求的状态码。 
      ·Trace Information 包含跟踪日志、网页生命周期中按时间先后顺序各个步骤的列表。另外,也可以向其中添加定制信息。 
      ·控件树 以一种分层次的方式列出网页上的所有控件,包括每个控件以字节计算的大小。 
      ·Cookies集合 列出该网页创建的所有Cookie。 
      ·头部集合 HTTP头部以及它们的值。 
      ·Server变量 与该网页相关的Server环境变量。 
       
      包含在Trace Information小节中的跟踪日志是最有用的,在这里我们可以插入自己的跟踪命令。trace类中有2个方法能够在跟踪日志中插入命令:Trace.Write和Trace.Warn,除了Trace.Warn命令用红色字体显示、Trace.Write命令用黑色字体显示外,它们是相同的。下面是跟踪日志的一个屏幕快照,其中包含有几个Trace.Warn命令。 
       
      跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个代码中插入Trace.Write和Trace.Warn语句,而在最终交付应用程序时,可以通过改变Page命令中trace属性的值,禁止这些命令起作用,而无需在部署应用软件前删除这些输出语句。 
      

  4.   

    public void Page_Load(Object src,EventArgs e)
    {
    Trace.Write("ok");
              }改成:
    public void Page_Load(Object src,EventArgs e)
    {
    Response.Write("ok");
              }
      

  5.   

    可能我说的有点模糊,我的意思是我用VS2003在WebForm1.aspx.cs中定义了一个Page_Load方法,然后我又在WebForm1.aspx中又嵌入了一个Page_Load方法,结果在aspx中嵌入的Page_Load方法没有执行,似乎被WebForm1.aspx.cs中的Page_Load方法给屏蔽掉了,就是这样,我想说的是页面执行时没有不能重复定义两个Page_Load方法之类的错误提示,好像aspx页面执行时动态编译产生的类是继承自后台代码的类(本例中的MyDemo.WebForm1),那么,因该是页面上的Page_Load方法屏蔽了在cs文件中定义的同名方法,但是却不是这样,我也不知道我说清楚了没有,还是解释的更模糊了呢?希望对此了解深刻的高手不吝赐教!