文件->新建项目
在Visual Studio 2008或者免费的Visual Web Developer 2008 Express选择文件->新建项目菜单,从而开始我们的NerdDinner应用。
这将引发“新建项目”对话框。我们选择对话框左手边的“Web”节点,然后选择右边的“ASP.NET MVC Web Application”工程模板,这就创建了一个新的ASP.NET MVC应用:
我们把工程命名为“NerdDinner”,然后点击“确定”创建它。
当我们点击“确定”时,Visual Studio还会显示一个额外的对话框,提示我们是否同时为这个新应用创建一个单元测试工程。这个单元测试工程能够让我们建立自动化的测试来检验应用的功能和行为(教程的稍后部分会覆盖到这个范围)。
“测试框架”下拉框会填入机器上面已经安装的所有可用的ASP.NET MVC单元测试工程模板。可以下载NUnit、MBUnit和XUnit版本。也支持内置的Visual Studio单元测试框架。
注意:只有Visual Studio 2008专业版和更高版本才有Visual Studio单元测试框架。如果你用的是VS 2008标准版或者Visual Web Developer 2008 Express你需要去下载安装ASP.NET MVC的NUnit、MBUnit或者XUnit扩展,这样这个对话框才会显示。如果这些测试框架都没有安装,这个对话框不会显示。
我们将使用默认的“NerdDinner.Tests”来命名建立的测试工程,用“Visual Studio Unit Test”框架选项。当我们点击“OK”按钮后,Visual Studio就会创建一个解决方案,里面有两个工程,一个是Web应用,另外一个是单元测试:
考察NerDinner目录结构
当你用Visual Studio创建了一个新的ASP.NET MVC应用,它会自动地在工程里面添加一些文件和目录:
ASP.NET MVC工程默认会有6个顶层目录:
目录 | 用途 |
/Controllers | 放置处理URL请求的控制器类的地方 |
/Models | 放置表示与操作数据的类的地方 |
/Views | 放置负责渲染输出的UI模板文件的地方 |
/Scripts | 放置JavaScript库文件和脚本(.js) |
/Content | 放置css和图片文件,以及其它非动态/非JavaScript的内容 |
/App_Data | 放置想要读写的保存数据的文件 |
ASP.NET MVC并不硬性要求这样的结构。实际上,大型应用的开发者一般会把这个应用分散到多个工程中以便维护(例如:通常会从Web应用分出数据模型类到独立的类库工程)。不过,默认的工程结构确实提供了一个很好的默认目录惯例,用它我们能够保持我们应用的有关内容整洁。
展开 /Controllers 目录,会发现Visual Studio默认在项目里面添加了两个控制器类:HomeController和AccountController:
展开 /Views 目录,会发现项目中添加了三个子目录:/Home、/Account和 /Shared,每个子目录里面还有几个模板文件:
展开 /Content 和 /Script 目录,会发现有一个用于为整个网站的HTML提供样式的 Site.css 文件,还有为应用提供ASP.NET AJAX和jQuery支持的JavaScript库:
展开NerdDinner.Test项目,会发现包含两个控制器类的单元测试的两个类:
Visual Studio添加的这些默认文件提供给我们一个可运行的应用的基本结构:主页,关于页,账户登录、登出、注册页,还有一个未处理错误的页面(全部都已烹调完毕,开罐即食)。
运行NerdDinner应用
我们可以选择 调试->启动调试 或者 调试->开始执行(不调试) 菜单项来运行工程:
这将启动Visual Studio内置的ASP.NET Web服务器,并且运行我们的应用:
下面是我们的新项目的主页(URL:“/”):

点击“About”标签显示关于页(URL:“/Home/About”):

点击右上角的“Log On”链接进入登录页(URL:“/Account/LogOn”):

如果我们没有登录帐号,可以点击注册链接(URL:“/Account/Register”)来创建一个帐号:

实现上述主页、关于页、登录/登出/注册功能的代码,在我们创建新工程的时候已经默认添加了。我们将用它来作为我们的应用的起点。
测试NerdDinner应用
如果我们用的是Visual Studio 2008的专业版或者更高的版本,我们就能够使用其内置的单元测试IDE支持来测试项目:
选择上述的任何一个选项将会打开IDE里面的“测试结果”窗格,提供给我们新工程所包含的覆盖了内置功能的27个单元测试的通过/失败状态:
