第10章Web应用程序ASP.NET是Microsoft的新一代服务器端技术,是.NET框架的一部分。运用C#可以创建Web应用程序。本章介绍ASP.NET的基本概念,以及如何使用ASP.NET建立Web应用程序。10.1ASP.NET简介1996年,Microsoft公司推出了功能强大的服务器端脚本编程环境ASP,2001年版本更新为ASP3.0。ASP.NET虽然是ASP3.0的延续,但它是一种完全不同的网页开发手段。它建立在.NET平台上,在基于公共语言运行库(CLR)的编程框架的服务器上可以生成功能强大的Web应用程序。10.1.1用C#创建Web应用程序打开VS2005,选择“文件”→“新建”→“网站”选项,在“新建网站”对话框的“位置”选项中选中“文件系统”,“语言”选中“VisualC#”,“模板”选择“ASP.NET网站”。进入工作区后,切换到“设计视图”,逐个添加控件,这个过程与Windows添加控件的过程相同。在“视图”→“工具箱”栏,选择“Web窗体”选项,将控件拖入页面。每个控件的左上角都有一个绿色的小箭头,表示它是一个Web控件。ASP.NET的控件分为两类:HTML控件和Web控件。将WebForm1.aspx重命名为Multiply.aspx。页面控件设置如表10.1所示。双击EqualButton控件,为EqualButton控件添加Click事件,代码如下:privatevoidEqualButton_Click(objectsender,System.EventArgse){ResultLabel.Text=(double.Parse(NumberText1.Text)*double.Parse(NumberText2.Text)).ToString();}生成解决方案后运行,显示结果如图10.2所示。双击EqualButton控件,为EqualButton控件添加Click事件,代码如下:privatevoidEqualButton_Click(objectsender,System.EventArgse){ResultLabel.Text=(double.Parse(NumberText1.Text)*double.Parse(NumberText2.Text)).ToString();}10.1.2ASP.NET程序结构如果将Web窗体设计器中的Multiply.aspx从“设计”转换到“HTML”视图,看到的文件非常类似于HTML文件,但与HTML文件又不同。【例10.1】分析ASP.NET的页面文件Multiply.aspx。%@PageLanguage=C#AutoEventWireup=trueCodeFile=Multiply.aspx.csInherits=_Default%!DOCTYPEhtmlPUBLIC−//W3C//DTDXHTML1.0Transitional//EN−transitional.dtdhtmlxmlns==servertitle无标题页/title/headbodyformid=form1runat=serverdivasp:LabelID=NumberLabel1runat=serverStyle=z−index:100;left:124px;position:absolute;top:112pxText=Number1/asp:Labelasp:LabelID=NumberLabel2runat=serverStyle=z−index:101;left:273px;position:absolute;top:114pxText=Number2/asp:Labelasp:TextBoxID=NumberText1runat=serverStyle=z−index:102;left:103px;position:absolute;top:159pxWidth=94px/asp:TextBoxasp:TextBoxID=NumberText2runat=serverStyle=z−index:103;left:255px;position:absolute;top:159pxWidth=94px/asp:TextBoxasp:LabelID=MultiplyLabelrunat=serverStyle=z−index:104;left:221px;position:absolute;top:162pxText=*/asp:Labelasp:ButtonID=EqualButtonrunat=serverStyle=z−index:105;left:378px;position:absolute;top:159pxText==Width=43pxOnClick=EqualButton_Click/asp:LabelID=ResultLabelrunat=serverStyle=z−index:107;left:442px;position:absolute;top:161px/asp:Label/div/form/body/html【例10.2】分析ASP.NET页面的代码文件Multiply.aspx.csusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;publicpartialclass_Default:System.Web.UI.Page{protectedvoidEqualButton_Click(objectsender,EventArgse){ResultLabel.Text=(double.Parse(NumberText1.Text)*double.Parse(NumberText2.Text)).ToString();}}可以看出,ASP.NET页面所对应的服务器端代码与在WinForm中所用到的C#代码在结构上基本一致,都有名字空间、类等,是完全的面向对象的代码结构。这样的结构,大大减小了网页设计与一般WinForm程序设计的差异,它们的设计过程都可以概括成以下模式:1)将控件拖入页面,修改属性及ID。2)添加控件的事件处理方法,修改各控件的属性表现,完成功能并显示结果。10.2WebForm10.2.1WebForm基础ASP.NET中WebForm指的是一个Web页面,它像一个容器,包容了各种控件。页面都以.aspx为扩展名,如Multiply.aspx。有的翻译成Web表单,这容易与标记Form/Form混淆,所以本书一般指Web页面。在Web页面中,可以对各种控件建立对应的事件。在10.1节中,Button控件的“单击Click”事件,事件代码则执行两个数的相乘。下面再举个例子。【例10.3】ASP.NET事件。%@PageLanguage=C#AutoEventWireup=trueCodeFile=Default.aspx.csInherits=_Default%htmlxmlns==servertitle无标题页/title/headbodyformid=form1runat=serverdivasp:LabelID=Label1runat=serverStyle=z−index:100;left:41px;position:absolute;top:61pxText=用户名:/asp:Labelasp:LabelID=Label2runat=serverStyle=z−index:101;left:41px;position:absolute;top:97pxText=密码:/asp:Labelasp:TextBoxID=tb_namerunat=serverStyle=z−index:102;left:133px;position:absolute;top:59pxWidth=148px/asp:TextBoxasp:LabelID=Label3runat=serverFont−Bold=TrueForeColor=RedStyle=z−index:103;left:40px;position:absolute;top:18pxText=新会员注册页面Width=148px/asp:Labelasp:TextBoxID=tb_pwd1runat=serverStyle=z−index:104;left:134px;position:absolute;top:96pxTextMode=PasswordWidth=148px/asp:TextBoxasp:LabelID=Label4runat=serverStyle=z−index:105;left:40px;position:absolute;top:136pxText=确认密码:/asp:Labelasp:TextBoxID=tb_pwd2runat=serverStyle=z−index:106;left:135px;position:absolute;top:135pxTextMode=PasswordWidth=148px/asp:TextBoxasp:LabelID=Label5runat=serverStyle=z−index:107;left:41px;position:absolute;top:179pxText=电子邮箱:/asp:Labelasp:LabelID=Label6runat=serverStyle=z−index:109;left:39px;position:absolute;top:223pxText=是否公开邮箱:Width=120px/asp:Labelasp:RadioButtonID=rb_yesrunat=serverGroupName=IsPublicStyle=z−index:110;left:170px;position:absolute;top:222pxText=是/asp:RadioButtonID=rb_norunat=serverChecked=TrueGroupName=IsPublicStyle=z−index:111;left:249px;position:absolute;top:222pxText=否/asp:ButtonID=btn_submitrunat=serverOnClick=btn_submit_ClickStyle=z−index:112;left:44px;position:absolute;top:269pxText=提交信息Width=83px/hrstyle=z−index:114;left:45px;width:451px;position:absolute;top:313px;height:1px/asp:LabelID=SubmitResultrunat=serverHeight=122pxStyle=z−index:115;left:45px;position:absolu