购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 开发ASP.NET 4.0应用程序

使用ASP.NET开发应用程序是非常轻松的,程序员可以使用ASP.NET基于事件的编程模型,只要了解了ASP.NET的页面执行模型、掌握一些服务器控件的用法就能开发出非常漂亮的Web应用程序。作为选择,也可以使用ASP.NET MVC基于模式的编程模型,使用一些比较先进的软件工程开发方法,ASP.NET Web窗体编程与ASP.NET MVC都属于ASP.NET这个大的开发框架的一个组成部分,如何决择,取决于项目的规模和对于模式的认识程度,本节将带领大家了解如何开始步入ASP.NET开发的世界。

1.2.1 准备ASP.NET的开发环境

要开发ASP.NET应用程序,需要安装微软提供的Visual Studio 2010或者是免费的Visual Web Developer Express。Visual Web Developer Express是一个免费的Visual Studio Web开发环境,用来构建和测试ASP.NET应用程序,该工具提供了如下功能:

· 具有编辑HTML和CSS的功能强大的编辑器,具有语法高亮和智能提示功能。

· 对于ASP.NET、C#、VB.NET及JavaScript提供了强大的调试支持。

· 支持诸如ASP.NET MVC、AJAX、Silverlight、jQuery应用程序开发框架。

· 内置的基于FTP的Web部署工具和数据库部署环境。

· 使用内置的Web服务器或者IIS来测试ASP.NET应用程序。

该工具可以从ASP.NET的官方网站上下载,下载网址为http://www.asp.net/downloads,下载安装页面如图1.9所示。

当然如果具有合适的授权,建议程序员在开发生产用的应用程序时,使用功能强大的Visual Studio 2010旗舰版, Visual Studio 2010 旗舰版提供了一个包含工具和服务器基础结构的集成环境,此环境简化了整个应用程序开发过程。使用高效、可预知且可自定义的过程交付业务结果,并通过分析来提高整个生命周期中的透明度和可跟踪性。也就是说,这个版本提供了全功能的开发环境,没有任何使用上的限制与精简,试用版本可以从微软网站上进行下载并安装。

注意:如果存在早期版本的Visual Studio,依然可以在这样的计算机上安装最新版本的Visual Web Developer Express,不同版本的开发环境能够友好的共存,对于一些老版本开发的应用程序,依然可以使用老版本的开发环境进行打开。

在安装了Visual Web Developer Express之后,会在计算机上安装.NET Framework 4.0版,所以版本的.NET Framework都放在操作系统安装盘的windows文件夹下,在笔者的电脑中位于C:\windows\microsoft.net\Framework文件夹中,如果安装了多个版本的.NET框架,可以看到每个框架都会存放在各自的版本号命名的文件夹中。Visual Studio及Visual Web Developer Express均具有多目标支持的特性,因此可以开发任何版本的ASP.NET应用程序,可以从项目的属性页的目标框架中查看当前程序所在的目标版本,如图1.10所示。

img

图1.9 下载安装ASP.NET开发环境

img

图1.10 ASP.NET应用程序的目标框架

1.2.2 理解Web网站与Web应用程序的差异

img

图1.11 Web网站项目

在Visual Studio 2010中提供Web网站和Web项目两种类型的创建ASP.NET应用程序的方式,很多初学者不了解这两者的差异,甚至很多从业者也不太清楚微软为什么提供了两种创建方式。用户可以选择Visual Studio 2010的主菜单中的“文件|新建|项目”菜单项,在已安装的模板中可以看到Web项目模板,如图1.11所示。

1.Web 应用程序项目和网站项目的区别

如果选择主菜单上的“文件|新建|网站”菜单项,会看到与这些应用程序对应的网站项目。这两者最大的区别可能在于Web应用程序会为网站创建一个Visual Studio项目文件(.csproj 或 .vbproj) ,而Web网站则没有,会用一个隐藏的解决方案资源管理文件,这个文件通常位于用户文件夹下的\Documents\Visual Studio 2010\Project\网站名称下面,如创建了一个SimpleSite的网站,将会在文件夹下产生两个文件SampleSite.sln和SampleSite.suo。

除了项目文件结构不同之外,在编译、命名空间与部署上都有较大的区别,如表1.1所示。

表1.1 Web网站与Web项目的主要差异

img

由于Web应用程序项目会在开发计算机上显式编译并生成一个程序集,因此一旦修改了程序,需要进行重新编译,而ASP.NET网站项目只在用户第一次请求时进行自动编译,因此无须重新再编译。在使用Web应用程序项目新建文件时,会看到对应窗体和母版页总是会伴随一个Designer文件,而网站则不包含,如图1.12所示。

img

图1.12 包含Designer文件的Web应用程序项目

由于Web应用程序项目会自动为每个文件添加命名空间,因此在编译后将会生成多个程序集,而Web网站项目由于不存在命令空间,会自动产生一个程序集。Web应用程序有重新生成和发布两项,可以作为类库被引用,Web网站只有一个发布网站项,也不可以作为类库被引用。Web应用程序ASP.NET文件夹中不包括bin、 App_Code, Web网站可以添加ASP.NET文件夹,包括bin、App_Code,Web应用程序可以添加组件和类,Web网站则没有。

在部署时,Web应用程序可以不用部署源代码,只需要部署程序集文件即可,但是需要进行一些设置,对于网站项目的话,可以直接以复制粘贴的形式来进行,Web网站比Web项目易于部署。

2.如何选择Web网站或者是Web应用程序

如何选择Web网站或者Web应用程序,依据项目的规模和项目团队想要的控制方式,微软提供了表1.2所示的选择建议。

表1.2 选择使用Web网站还是Web应用程序建议

img

建议:如果是一个企业的网站项目,则选择Web网站优先,如果是一个使用ASP.NET的应用程序,比如生产管理系统之类的应用系统,则优先考虑Web应用程序项目。

1.2.3 开发第一个ASP.NET应用程序

为了让第一个示例程序保持尽可能的简单,但是又能基本了解整个ASP.NET的开发流程,在这个示例中将开发一个显示服务器端时间的简单用户程序,整个开发的步骤如下所示。

img 打开Visual Studio开发环境,从主菜单中选择“文件|新建|网站”菜单项,将弹出图1.13所示的“新建网站”对话框。

img

图1.13 “新建网站”对话框

在已安装的模板中选择Visual C#语言,中间的模板栏中列出了当前可供开发的ASP.NET网站类型的模板。

· ASP.NET网站:创建一个全功能的ASP.NET Web站点,Visual Studio 2010将创建基本的站点结构,包括用来定义站点全局外观的母版页,以及两个用来显示网页页面的Web页,分别是default.aspx和about.aspx,也包含了一个Account文件夹,实现了基本的注册、登录和密码变更功能。

· ASP.NET空网站:一个空白的Web网站结构,除了一个简单的Web.config配置文件之外什么都没有提供,这对于需要开启一个全新的网站来说是很有用的。

· ASP.NET Dynamic Data类型的网站:在模板列表中可以看到有两种类型,一种是实体网站,一种是Linq to SQL网站,这两种类型仅在访问数据库方面不同。用于提供动态数据类型的网站架构。

· WCF 服务:该模板创建了一个WCF服务,包含服务器端的方法使得远程客户端可以用来调用。

· ASP.NET Report网站:有两种类型的模板,一种是微软自己的ReportView控件和SQL Server Reporting Services类型的用来显示报表的网站;另一种是ASP.NET Crystal Report网站,提供了类似的服务,不过使用来自Crystal Report组件。

注意:Visual Studio中无论选择哪种模板,都会使用相同的方式编译且执行,这些模板的不同之处在于Visual Studio默认为用户创建的文件。

img 为Web站点选择一个位置,这个位置是Web网站将要存储的地方,多数开发者会选择默认的文件系统,使用Visual Studio 2010内置的Web服务器来开发与调试网站,可以单击“浏览”按钮,从弹出的对话框中选择一个文件位置,如图1.14所示。在指定了要创建的网站的位置后,单击“确定”按钮,Visual Studio将在解决方案资源管理器中列出当前网站中已经创建的文件,此时可以直接单击工具栏中的“调试”按钮,或者按【F5】键,查看一下默认的网站模板效果。

img 当开始运行ASP.NET网站时,首次运行会弹出一个窗口询问用户是否要在Web网站中包含调试信息,如图1.15所示。

这个窗口将改变Web.config中的配置项,以便在应用程序开发过程中包含调试信息,在网站发布时,可以通过在Web.config关闭调试项来发布网站,单击“确定”按钮后,将看到由Visual Studio产生的默认网站,如图1.16所示。

img

图1.14 指定Web网站的存放位置

img

图1.15 调试询问窗口

img

图1.16 ASP.NET默认网站模板

img 这个默认的网站模板的标题、菜单及网页引用的CSS样式表文件都定义在Site.master母版页中,在解决方案资源管理器中,双击Site.master打开母版页,Visual Studio提供了3种方式来查看或编辑一个Web页面或母版页。

· 设计视图:可以以所见即所得的方式查看或设计页面的最终呈现效果。

· 源代码视图:可以见到页面的标签声明代码,可以直接从工具面板中拖动控件到源代码视图,将自动产生相应的生成代码,如HTML或者ASP.NET服务器控件的声明。

· 拆分视图:提供了源代码视图与设计视图的同步显示示,如在源代码视图中编辑了代码之后,就可以在设计视图中看到最终的效果。

可以在设计窗口的底部单击不同的按钮来切换到不同的视图,如图1.17所示。

img

图1.17 视图拆分窗口

为了简单起见,将母版页中的标题更改为“第一个ASP.NET应用程序” ,然后在菜单栏中添加一个菜单项。

img 导航菜单是一个ASP.NET服务器控件, Visual Studio提供了强大的设计时的编辑功能,只要选中菜单项,Visual Studio会显示“智能标签”按钮 img ,单击该按钮,从弹出的菜单中选择“编辑菜单项” ,Visual Studio将会弹出图1.18所示的编辑窗口。

在该窗口中添加了一个名为“显示日期”的菜单项,指定路径为网站根目录下的ShowDate.aspx,使用了表示网站根目录的~符号。ShowDate.aspx现在还不存在,将在下面的步骤中进行创建。

img 为了向Web站点添加一个页面,在解决方案中用鼠标右键单击网站项目,从弹出的快捷菜单中选择“添加新项”菜单项,Visual Studio将弹出“添加新项”窗口,如图1.19所示。

可以在该窗口中选择可以添加到Web网站中的多种类型的文件,如网站图片文件、普通的HTML文件、类文件、CSS样式表文件、数据文件、配置文件等,最常被使用的就是Web窗体类型的文件,为该文件命名为ShowDate.aspx,在右下角提供了以下两个新建文件选项。

· 将代码放在单独的文件中: Visual Studio将创建两个文件,一个是设计用的窗体文件,一个是用来放置页面交互C#程序代码的代码后置文件,否则Visual Studio将只创建单个文件来存放标记与代码。

· 选择母版页:将弹出一个“选择母版页”窗口,在该窗口中可以指定用来统一网站风格的母版页。

在示例中选中这两个选项,Visual Studio 将弹出图1.20所示的“选择母版页”窗口,选中“Site.master”母版页,单击“确定”按钮添加这个Web窗体到网站项目中。Visual Studio将产生一个Web窗体页面,应用母版页之后,可以在设计视图中看到,母版页定义的区域是不能编辑的,只有母版页内容区域可以添加ASP.NET页面内容。

img 从Visual Studio工具箱中拖一个TextBox控件和一个Button控件,放到窗体的内容区域。如果工具箱不可见,可以选择主菜单中的“视图|工具箱”菜单项调出工具箱。找到属性面板,为TextBox控件指定ID为txtDate,为Button控件指定ID为btnShow,指定其显示文本的Text属性为“显示日期” ,设计视图如图1.21所示。

img 在为用户界面添加好控件后,接下来开始编写程序代码,这与传统的Windows Forms编程方法非常相似,双击Button控件,Visual Studio将自动切换到后置代码视图,Visual Studio同时生成按钮的单击事件处理代码框架,在花括号之间直接输入程序代码即可,为了在TextBox控件中显示当前的日期,编写了如下的代码:

img

img 现在第一个ASP.NET应用程序已经编写完成,可以按【F5】键运行这个网站,基于选择的默认浏览器类型, Visual Studio将自动打开浏览器,此时在Default.aspx中多了一个项“显示日期” ,单击该项,将进入到新建的ShowDate.aspx页面,如图1.22所示。单击“显示日期”按钮后,浏览器经过一个短暂的刷新后,会在TextBox控件中显示出当前的日期。

img

图1.18 “菜单项编辑器”窗口

img

图1.19 “添加新项”窗口

img

图1.20 选择要应用的母版页

img

图1.21 使用工具箱和属性添加和设置控件

img

图1.22 ShowDate.aspx运行效果

1.2.4 开发第一个ASP.NET MVC应用程序

ASP.NET MVC框架是微软推出的用来构建ASP.NET的最新的一个框架,这种基于模式的Web开发方式提供了不一样的开发体验,现在本节将带领读者开发一个显示当前日期的ASP.NET MVC应用程序,步骤如下所示。

img 打开Visual Studio,选择“文件|新建|项目”菜单项,从弹出的“新建项目”窗口中选择“ASP.NET MVC 2 Web应用程序” ,如图1.23所示。

img 指定应用程序名称为FiratASPNETMVC,单击“确定”按钮后,Visual Studio会弹出一个窗口,询问程序员是否要为MVC应用程序创建一个测试项目,如图1.24所示。

img

图1.23 新建ASP.NET MVC项目

img

图1.24 创建单元测试项目

img

图1.25 ASP.NET MVC文件夹结构

img 将单元测试整合到ASP.NET MVC项目中也是因为基于模式的架构提供了良好的可测试性,为了简化第一个示例应用程序的创建,选择“否,不创建单元测试项目”选项,单击“确定”按钮,Visual Studio将产生一个ASP.NET MVC的文件夹结构,如图1.25所示。

Visual Studio 2010生成的这些MVC文件夹类型都具有各自的含义与功能,ASP.NET MVC依赖于这些文件夹的结构来进行页面的生成,这些文件夹的作用如下。

· App_Data文件夹:包含数据库文件,如一个SQL Server Express数据库文件。

· Content文件夹:包含静态内容文件,如图片或者样式表文件。

· Controllers文件夹:包含ASP.NET MVC的控制器类。

· Models文件夹:包含ASP.NET MVC模型类。

· Scripts文件夹:包含JavaScript文件,包括ASP.NET AJAX库及jQuery库。

· Views文件夹:包含ASP.NET MVC的视图文件。

注意:这些文件夹是ASP.NET MVC的配置约定,因此程序员必须将相应的文件放在各自不同的文件夹中,如JavaScript脚本应该放在Scripts文件夹中。MVC的视图仅放在Views文件夹中等,依照这样的惯例使得程序更易维护和理解。

在ASP.NET中,用户对于Web页面的请求将不再是一个具体的.aspx的页面,每个请求经由URL路由交给控制器,控制器只是一个从System.Web.Mvc.Controller派生的类,而控制器中的行为将为具体的请求返回视图内容。行为就是一个用来处理特定请求的方法,这个方法可以具有一个或多个参数,或者没有参数。

举个例子,当直接运行网页时,默认将请求HomeController这个控制器中的Index行为,之所以有这样的路径是因为在global.asax中指定了Default路由,如代码1.4所示。

代码1.4 global.asax中的RegisterRoutes方法

img
img

在默认的参数中指定controller为Home,ASP.NET MVC中的约定是每个控制器以Controller结尾,因此在Controller文件夹中会存在一个HomeController。在MapRoute中指定action,即行为是Index,那么在Controller中将会存在一个Index方法。

img 在了解了ASP.NET MVC的基本运行原理后,现在打开Controller文件夹中的HomeController.cs控制器文件。将看到一个Index的公共方法,该方法在为视图数据字典赋了一个欢迎信息,并返回一个ViewResult类型的对象给视图。下面修改这个方法,为视图数据字典添加一个显示当前时间的新项,如代码1.5所示。

代码1.5 HomeController控制器中的Index方法

img

img ASP.NET MVC约定,每个控制器都有一个对应的在Views中的文件夹,每个行为方法都有一个对应的文件,因此可以在路径Views\Home\中找到Index.aspx文件,切换到源代码视图,在系统生成的代码下面添加一个显示视图数据字典中的CurrdateTime关键字的当前时间,代码如下:

img

注意: ViewData用于在视图和控制器之间传递数据,使用这个字典可以保存任何类型的对象。

img

图1.26 示例运行效果

img 虽然对于ASP.NET MVC的介绍非常有限,但是现在读者也经历了MVC的开发流程,示例的运行效果如图1.26所示。

模型用来提供数据或者应用逻辑,控制器用来向视图提供数据,这样的分层模型便于应用系统的扩展和维护,也便于加入单元测试功能,在本书后面的内容中,将会以一些ASP.NET MVC实例的形式来介绍如何开发MVC类型的Web应用程序。 XVkPMXFjG0jvyxtwDmr0FRgZDKp3tVGrHImK/NPoYxhTc0yenvmhxXHE751tvA4d

点击中间区域
呼出菜单
上一章
目录
下一章
×