代码分离是.net时代所提倡的,所以我们如果还按照asp时的任意嵌套方式就不好了。那样界面和功能的改动都回很麻烦,所以我们都是按照代码分离的方式写的。 我总结,却又你提到的两种方式。 我认为低一种叫后代吗模块即一个.aspx文件和一个.cs(.vb)文件,.aspx中写的是界面,所有的功能逻辑都写道.cs中。这种情况一般都用在什么情况呢。我认为是用vs.net作为开发环境的时候,因为这是你创建一个web窗体的时候会自动帮你创建,这个.cs而且这是在.cs中写代码回有代码提示功能,所以效率会很高。当然不利于更熟练的掌握代码。毕竟太多的提示使你兜懒得去记忆属性什么的了。使用这种方法你还会看到.aspx文件上部有这样一行: 假设当前文件名为manage.aspx,后代吗文件名为manage.aspx.cs <%@ Page language="c#" Codebehind="manage.aspx.cs" AutoEventWireup="false" Inherits="csMarket.manage" %> 这一行中有一个Codebegind属性,指定了当前文件的代码位于manage.aspx.cs文件中 如果用第二种方式,就不用那个.cs文件了,也就是将界面与代码都写在.aspx文件中。一般界面和代码分开写。 将代码包含在<mce:script language="c#" runat=server></mce:script> 这种方式一般都用没有用vs.net作为开发环境的情况下。因为如果用vs.net,决定用第二种,就会麻烦,而且写代码也没有提示。所以如果不用vs.net作为开发环境的时候,可以选第二种。 这种方法的代码写法与写在.cs(后代码模块)中基本一样。响应的事件一般要包含这样两个参数(object sender,EventArgs e) 引用名称空间这样的方式 <%@Import NameSpace="名称空间名"%> 例: <%@ Page language="C#" %> <%@Import NameSpace="System"%> <%@Import NameSpace="System.Data"%> <%@Import NameSpace="System.Data.OleDb"%> <%@Import NameSpace="DatabaseOP"%> 第一行中不用再指定Codebehind属性了。 这样就讨论了两种方法,不知道阁下认同与否。 还有在vs.net中开发asp.net效率很高但是有什么缺点呢,任何对.cs的更改,都要重新生成一下才能生效。所以还离不开vs.net了。 开发的时候.aspx中写js和html都有提示,但是写c#代码没有提示,而在.cs中写c#代码就有提示。 阁下还要注意一点,一般你可以将一些和信代码或者一些模块代码,通用逻辑等等都写到一个独立的.cs中,建一个新的名称空间,将代码模块按功能划分到各个类中。然后用csc.exe将它编译成dll文件,拷贝到你的web虚拟目录下的bin目录下。你就可以在其他的地方引用它了 例如: .cs内容为: namespace DatabaseOP { using System; public class a{ } public class b{ } public class c{ } public class d{ } } 引用的方式: 在.aspx中 <%@Import NameSpace="DatabaseOP"%> 然后就可以在代码中 a mm=new a(); 来实例化一个类了 在.cs中 直接用DatabaseOP.a mm=new DatabaseOP.a(); 来实例化一个类