使用 ASP.NET MVC 创建一个任务列表应用程序
本教程旨在让您了解构建 ASP.NET MVC 应用程序的过程。在本教程中,我将从头到尾构建整个 ASP.NET MVC 应用程序。我将介绍如何构建简单的任务列表应用程序。
如果使用过 Active Server Pages 或 ASP.NET,则会发现 ASP.NET MVC 与其非常类似。ASP.NET MVC 视图非常类似于 Active Server Pages 应用程序中的页面。并且,与传统的 ASP.NET Web Forms 应用程序相同,ASP.NET MVC 可以完全访问 .NET Framework 提供的丰富的语言和类。
希望您能够通过本教程了解构建 ASP.NET MVC 应用程序的过程与构建 Active Server Pages 或 ASP.NET Web Forms 应用程序的相同和不同之处。
任务列表应用程序
由于目标是让事情尽量简单,因此我们将创建一个非常简单的任务列表应用程序。这一简单的任务列表应用程序将执行以下三项任务:
1 列出一系列任务
2 创建新任务
3 标记某项任务已完成
为了尽量简单,我们将利用极少几项 ASP.NET MVC Framework 功能来构建应用程序。例如,我们不会使用 Test-Driven Development 或 HTML Helper 方法。
入门
需要安装 Visual Studio 2008 或 Visual Web Developer 2008 Express 来构建 ASP.NET MVC 应用程序。还需要下载 ASP.NET MVC Framework。
如果没有 Visual Studio 2008,可以从下面的网址下载 90 天试用版:
http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx
另外,也可以使用 Visual Web Developer Express 2008 创建 ASP.NET MVC 应用程序。如果决定使用 Visual Web Developer Express,则必须安装 Service Pack 1。可以从以下网址下载带有 Service Pack 1 的 Visual Web Developer 2008 Express:
安装 Visual Studio 2008 或 Visual Web Developer 2008 后,需要安装 ASP.NET MVC Framework。可以从以下网址下载 ASP.NET MVC Framework:
创建 ASP.NET MVC Web Application 项目
我们首先在 Visual Studio 2008 中创建一个新的 ASP.NET MVC Web Application 项目。选择菜单选项 File, New Project,然后将看到如图 1 所示的 New Project 对话框。选择偏爱的编程语言(Visual Basic 或 Visual C#)并选择 ASP.NET MVC Web Application 项目。将项目命名为 TaskList 并单击 OK 按钮。
图 1:New Project 对话框( 单击查看大图)
每当创建新的 ASP.NET MVC Web Application 项目时,Visual Studio 都会提示您创建单独的单元测试项目。将出现如图 2 所示的对话框。在本教程中,由于时间关系我们将不创建测试(对此表示遗憾),因此选择 No 选项并单击 OK 按钮。
ASP.NET MVC 应用程序有一系列标准文件夹:Models、Views 和 Controllers 文件夹。可以在 Solution Explorer 窗口中看到这一系列文件夹。我们需要向 Models、Views 和 Controllers 文件夹添加文件以构建任务列表应用程序。
当使用Visual Studio 创建新的ASP.NET MVC 应用程序时,可以使用示例应用程序。因为我们想要从头开始,所以需要删除示例应用程序的一些内容。需要删除以下文件和文件夹:
· ControllersHomeController.cs
· ViewsHome
创建控制器
通常,在构建 ASP.NET MVC 应用程序时,将首先构建控制器。每个对应于 ASP.NET MVC 应用程序发出的浏览器请求都由控制器处理。控制器包含负责响应请求的应用程序逻辑。
通过右键单击 Controllers 文件夹并选择菜单项 Add, New Item,向 Visual Studio 项目添加控制器。选择 MVC Controller Class 模板。将新的控制器命名为 HomeController.cs,然后单击 Add 按钮。
对于 TaskList 应用程序,我们将修改 HomeController 类,在其中添加程序清单 1 中的代码。修改后的控制器包含 4 个函数,分别为 Index()、Create()、CreateNew() 和 Complete()。每个函数对应一个控制器操作。
程序清单 1HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TaskList.Models;
namespace TaskList.Controllers
{
public class HomeController : Controller
{
// Display a list of tasks
public ActionResult Index()
{
return View();
}
// Display a form for creating a new task
public ActionResult Create()
{
return View();
}
// Add a new task to the database
public ActionResult CreateNew()
{
return RedirectToAction("Index");
}
// Mark a task as complete
public ActionResult Complete()
{
// database logic
return RedirectToAction("Index");
}
}
}
下面是每个控制器操作的目的:
· Index() 要显示任务列表时调用此函数。
· Create() 要显示用于添加新任务的表单时调用此函数。
· CreateNew() 提交添加新任务的表单时调用此函数。控制器操作实际上是将新任务添加到数据库。
· Complete() 任务标记为完成时调用此函数。
我们需要向控制器添加其他逻辑以使其按希望的方式工作。
控制器中的任何公共函数都公开为控制器操作。请注意这一点。控制器操作是公开的。通过向 Web 浏览器地址栏键入正确的 URL,任何人都可以调用控制器操作。所以,在不需要调用函数时,不要意外地在控制器中创建公共函数。
请注意,控制器操作返回 ActionResult。ActionResult 代表操作将要执行的内容。前两个控制器操作 Index() 和 Create() 返回 MVC 视图。第三和第四个操作将用户重定向到另一个控制器操作。
下面是这些控制器操作的工作方式。在请求 Create() 控制器操作时,返回一个包含用于创建新任务的表单的视图。当提交此表单时,调用 CreateNew() 控制器操作。CreateNew() 控制器操作将新任务添加到数据库并将用户重定向到 Index() 控制器操作。Index() 控制器操作返回一个视图,显示整个任务列表。最后,如果完成一项任务,则调用 Complete() 控制器操作并更新数据库。Complete() 操作将用户重定向到 Index() 操作并更新显示的任务列表。
创建视图
视图包括发送到浏览器的 HTML 标记和内容。视图是 ASP.NET MVC 应用程序中最接近页面的内容。通过创建扩展名为 .aspx 的文件创建视图。
必须将视图放在正确的位置。如果正在为 HomeController 的 Index() 操作方法创建视图,则必须将视图置于具有以下路径的文件夹内:
ViewsHomeIndex.aspx
如果为 ProductController 的 Index() 操作方法创建视图,那么必须将视图放到以下文件夹中:
ViewsProductPrice.aspx
默认情况下,视图应该与其对应的控制器操作的名称相同。视图必须放置在与其控制器名称相对应的文件夹中。
在 Views 文件夹中右键单击子文件夹并选择菜单项 Add, New Item 可创建视图。选择 MVC View Page 模板以添加新视图。我们需要在下面的路径下创建两个视图:
ViewsHomeIndex.aspx
ViewsHomeCreate.aspx
创建这两个视图后,Solution Explorer 窗口应该包含如图 3 所示的文件。
视图包括 HTML 内容和脚本。Index.aspx 视图将用于显示所有任务的列表。为了说明视图的用途,请将程序清单 2 中的内容添加到 Index.aspx 视图中。
程序清单 2Index.aspx
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14820420/viewspace-1017216/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14820420/viewspace-1017216/