ASP.NET提供了两种组织代码的方式,不管是ASP.NET1.X还是ASP.NET2.0都是通用的<!----><!---->
(1)内置代码分离
这是最基本的一种方式,感觉是为了和传统的ASP兼容才提出的。这种方式同样用于介绍ASP.NET知识点,例如建立一个WebCodeSeparated.ASPx页面,可能的代码如下
WebCodeSeparated.ASPx
</HTML>
<head>
<script ruant="server">
</script>
</head>
<body>
</body>
</HTML>
(2)页面布局和逻辑代码分离的文件,
VS2003就采用的这种思想,例如上面的WebCodeSeparated.ASPx可能为
WebCodeSeparated.ASPx和
WebCodeSeparated.ASPx.cs
为了关联两者关系,可以使用Codebehind和Inherits进行说明
在VS2005里,提供了parital关键字
现在把一个Label控件、一个TextBox控件和一个Button控件托放到WebCodeSeparated.ASPx上,最后生成的Source类似如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebCodeSeparated.ASPx.cs" Inherits="WebCodeSeparated" %>
WebCodeSeparated.ASPx
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML XMLns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<ASP:Label ID="Label1" runat="server" Text="Label"></ASP:Label><br />
<ASP:TextBox ID="TextBox1" runat="server"></ASP:TextBox>
<br />
<ASP:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></div>
</form>
</body>
</HTML>
WebCodeSeparated.ASPx.cs
public partial class WebCodeSeparated : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "hello" + TextBox1.Text + "Welcome to ASP.NET2.0";
}
}
那么这段代码有什么特点呢?
和ASP.NET1.1相比,这段代码有什么区别呢?
首先,Page指令由由CodeBehind="WebCodeSeparated.ASPx.cs"改成了CodeFile="WebCodeSeparated.ASPx.cs",为什么会有这样的改变呢?
这是因为,用CodeBehind的文件是在运行前编译的,而在运行时,其中的逻辑源代码文件可以不再使用。这给页面的的布局带来了非常的不便,请看下面示例子:
<%@ Page Language="C#" AutoEventWireup="true" %>
<script lauguage="c#" runat="server" >
Button1_Click()
{ Label1.Text = "hello" + TextBox1.Text + "Welcome to ASP.NET2.0";}
</script>
<body>
<form id="form1" runat="server">
<div>
<ASP:Label ID="Label1" runat="server" Text="Label"></ASP:Label><br />
<ASP:TextBox ID="TextBox1" runat="server"></ASP:TextBox>
<br />
<ASP:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></div>
</form>
</body>
</HTML>
这是单一的*.ASPx文件,显示的结果将和上面的一样。但是现在我想更改问候,例如改成如下代码,相当于中文版
<%@ Page Language="C#" AutoEventWireup="true" %>
<script lauguage="c#" runat="server" >
Button1_Click()
{ Label1.Text = "你好" + TextBox1.Text + "欢迎进入ASP.NET2.0";}
</script>
<body>
<form id="form1" runat="server">
<div>
<ASP:Label ID="Label1" runat="server" Text="Label"></ASP:Label><br />
<ASP:TextBox ID="TextBox1" runat="server"></ASP:TextBox>
<br />
<ASP:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></div>
</form>
</body>
</HTML>
那么当使用ASP.NET1.1版本在运行时,完全没有问题,显示中文版的问候。
然而,在ASP.NET1.1里,一般都是页面布局和代码分离的,上面代码在用Visual Studio.NET2003开发时,更多的写成如下的形式
<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="*.ASPx.cs"%>
<body>
<form id="form1" runat="server">
<div>
<ASP:Label ID="Label1" runat="server" Text="Label"></ASP:Label><br />
<ASP:TextBox ID="TextBox1" runat="server"></ASP:TextBox>
<br />
<ASP:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></div>
</form>
</body>
</HTML>
后台代码文件*.ASPx.cs为
Button1_Click()
{ Label1.Text = "hello" + TextBox1.Text + "Welcome to ASP.NET2.0";}
在开发时,由于当我们运行时(使用快捷键F5),系统自动将*.ASPx.cs编译为dll文件并放置在bin文件夹,然后供*.ASPx使用,这样以后如果我们需要将该页面部署到远程主机,例如您申请了一个 www.aspxcool.com域名和虚拟主机,你的Internet Server Provider(网络服务供应商)可能给你一个ftp帐户让你把页面文件上传到某个给定的文件夹下(例如wwww目录下),此时你上传时,只要上传*.ASPx和bin文件夹及其下面的dll文件就可以了,*.ASPx.cs源代码完全不需要(当然上传页可以),所以你现在应该感觉到了,如果我需要改变输出的问候为中文,该怎么办呢?
直接更改*.ASPx.cs里的代码为
Button1_Click()
{ Label1.Text = "你好" + TextBox1.Text + "欢迎进入ASP.NET2.0";}
可以吗?
当然不可以,事实上该源代码文件你可能都没有上传,你从何处更改,即使上传你更改了也不其作用。没有办法,您只好重新用VS.NET2003打开*.ASPx,并修改*.ASPx.cs的Button1_Click为中文版,然后再用VS.NET2003进行编译,最后把编译好的BIN下面的DLL文件再拷贝到服务商提供的wwww/bin文件夹下,覆盖原有的文件,如此一系列动作可以说是牵一发而动全身,
特别是你部署类似blogs、Community Server这样的大的项目时,更是为了一点的改动而重新编译整个项目,非常的麻烦。
现在ASP.NET2.0提供了CodeFile来改变这种情况,它可以使得*.ASPx.cs也是在运行时动态编译。所以在上面的例子里,如果您使用页面布局和逻辑代码分离的形式,在你更改过WebCodeSeparated.ASPx.cs里的源代码为中文版后,页面会在运行时进行显示。
在上面代码里使用了partial,那么时候了该关键字有什么好处呢
在ASP.NET1.1版本里,您应该知道,如果我们在WebForm1上放置了一个控件,例如ID为Button1的按钮则
*.ASPx会做如下记录
<ASP:Button id="Button1" runat="server">
而*.ASPx.cs会做如下记录
protected Button Button1 ; //定义了一个Button类对象Button1
由于这种关系,使得系统的维护变的非常困难,特别是在稍微复杂的应用程序中,改动一点有时需要重新编译整个项目。而且更为难办的是,如果你在程序里按照如下使用
*.ASPx
protected Button Button1 ; //定义了一个Button类对象Button1
而忘记在*.ASPx定义Button1,系统还会提示
“未将对象引用设置为实例”的错误
为了解决这些问题,.NET2.0才提出了partial 关键字,它使得如下的使用是正确的
你在*.ASPx里定义了一个按钮如
<ASP:Button id="Button2" runat="server">
这样您在*.ASPx.cs里就可以直接使用Button2,不用再定义类似 Button Button2;这样的对象,系统通过paritial自动将Button2关联起来。所以提高了维护性
(3)AutoEventWireup的属性由"false"改为了false,也就是说VWD2005主要支持隐式的事件代理处理
private void InitializeComponent()
{
this.SubmitBtn.Click += new System.Web.UI.ImageClickEventHandler(this.SubmitBtn_Click);
this.Load += new System.EventHandler(this.Page_Load);this.Load += new System.EventHandler(this.Page_Load);
}
现在VS更支持隐式的
也就是前面介绍的OnClick的方式。
分享到:
相关推荐
它支持ASP.NET、Windows Forms和ADO.NET,极大地简化了Web应用和桌面应用的开发。 2. **.NET Framework 2.0**:在1.1的基础上,2.0版增加了大量新功能,如Generics、Partial Classes、Anonymous Methods等,增强了...
- 例如,将使用ASP.NET 1.1的应用程序关联到“DotNet1_1AppPool”,将使用ASP.NET 2.0的应用程序关联到“DotNet2_0AppPool”。 4. **检查错误**: - 在完成以上配置后,可能会遇到一些错误,比如...
【FlyTreeView 4.3/3.6 for ASP.NET 1.1/2.0】是针对ASP.NET框架1.1和2.0版本的Web控件,它由NineRays公司开发,主要功能是提供一种高效且可自定义的树形视图展示方式。在2007年11月11日,该控件的两个不同版本3.6....
ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0ASP.NET MVC插件 MVC 2.0
假设已经有一个名为 “Test” 的站点,可以执行以下命令来将其应用程序池设置为 “ASP.NET1.1”: ```cmd appcmd set app "Test/" /applicationPool:"ASP.NET1.1" ``` #### 可能出现的问题及解决方法 - **问题...
可以选择日期 , 只是简单的实现功能
对于开发和运行基于ASP.NET的Web应用程序来说,.NET Framework 2.0是一个关键组件。这篇内容将深入探讨如何在WIN2003上的IIS中安装和配置ASP.NET插件,以及.NET Framework 2.0的相关知识点。 首先,我们需要了解...
在Windows Vista和Windows Server 2008操作系统中安装ASP.NET 1.1与IIS7是一项技术性任务,因为这两个平台默认支持的是ASP.NET 2.0及以上版本。然而,由于某些应用可能仍依赖于ASP.NET 1.1,所以了解如何在IIS7上...
在这个PDF教程中,读者可以期待找到关于以上知识点的详细解释,以及实践示例,帮助他们从零开始构建Asp.NET 1.1应用。"说明.html"可能是教程的简介或目录,"YuanMa.Cc.txt"可能包含额外的信息或资源链接。
3. ASP.NET增强:ASP.NET 2.0引入了母版页(Master Pages)、站点导航控件、皮肤(Skin)和主题(Theme)等功能,极大地方便了Web应用程序的开发和维护。 4. ADO.NET改进:2.0版本的ADO.NET增强了数据访问能力,...
ASP.NET MVC VS2008 2.0 插件.ASP.NET MVC VS2008 2.0 插件
【ASP.NET 2.0与Web 2.0概述】 ASP.NET 2.0是微软.NET Framework的一部分,它提供了一套强大的工具和技术,用于构建功能丰富的、...通过实践,你将能够掌握ASP.NET 2.0的精髓,并运用到实际项目中,提升你的开发技能。
Aspmenu.net v1.1作为一个ASP.NET控件,可以直接在ASP.NET页面中使用,简化了开发流程,提高了开发效率。 综上所述,Aspmenu.net v1.1作为一款专注于动态JavaScript DHTML菜单的工具,其强大而灵活的功能,对不同...
ASP.NET 2.0是微软推出的用于构建动态网站和应用程序的框架,它是.NET Framework的一部分,提供了丰富的功能和改进,使得Web开发更为高效和便捷。在Web2.0的时代背景下,ASP.NET 2.0被广泛应用于创建交互性强、用户...
ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它是在ASP.NET 1.x的基础上进行的重大改进。Web2.0则是互联网发展的一个阶段,强调用户交互、社区参与和数据共享。本教程旨在帮助新手全面掌握使用ASP.NET ...
本资源“ASP.NET1.1入门经典入门源码”是一个面向初学者的实践教程,配合相关教材,能够帮助学习者深入理解ASP.NET 1.1的核心概念和技术。 首先,ASP.NET 1.1引入了控件模型,这是一个关键的改进,使得开发者可以...
【标题】"精通ASP.NET2.0的Web2.0电子教程"是一个专门针对ASP.NET 2.0框架和Web2.0技术的学习资源。这个压缩包文件包含了多个部分,旨在帮助用户深入理解和掌握如何在ASP.NET 2.0平台上构建具有Web2.0特色的动态网站...
《Professional ASP.NET 1.1》是一本专为IT专业人士准备的权威指南,它深入探讨了ASP.NET 1.1这一关键的Web开发框架。这本书的随书代码库包含了使用C#和VB.NET两种主要.NET编程语言实现的示例和项目,旨在帮助读者更...
相较于之前的版本(如ASP.NET 1.0和1.1),ASP.NET 2.0引入了许多新特性,包括: 1. **控件生命周期增强**:控件现在拥有更明确的生命周期,使开发人员能够更好地理解和管理页面和控件的状态。 2. **母版页...