添加控制器 (2012)
注意
此处提供了本教程的更新版本,它使用 ASP.NET MVC 5 和 Visual Studio 2013。 它更安全,更易于遵循,并演示了更多功能。
MVC 代表 model-view-controller。 MVC 是一种用于开发架构良好、可测试且易于维护的应用程序的模式。 基于 MVC 的应用程序包含:
- M odels:表示应用程序数据的类,并使用验证逻辑为该数据强制实施业务规则。
- V iews:应用程序用于动态生成 HTML 响应的模板文件。
- C ontrollers:处理传入浏览器请求、检索模型数据,然后指定返回浏览器响应的视图模板的类。
我们将在本教程系列中介绍所有这些概念,并演示如何使用它们来生成应用程序。
让我们从创建控制器类开始。 在“解决方案资源管理器”中,右键单击“控制器”文件夹,然后选择“添加控制器”。
将新控制器命名为“HelloWorldController”。 将默认模板保留为 空 MVC 控制器 ,然后单击“ 添加”。
请注意,解决方案资源管理器已创建名为 HelloWorldController.cs 的新文件。 文件在 IDE 中打开。
将文件的内容替换为以下代码。
using System.Web;
using System.Web.Mvc;
namespace MvcMovie.Controllers
{
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "This is my <b>default</b> action...";
}
//
// GET: /HelloWorld/Welcome/
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
控制器方法将返回 HTML 字符串作为示例。 控制器命名 HelloWorldController
为 ,上面的第一个方法名为 Index
。 让我们从浏览器调用它。 (按 F5 或 Ctrl+F5) 运行应用程序。 在浏览器中,将“HelloWorld”追加到地址栏中的路径。 (例如,在下图中,它 http://localhost:1234/HelloWorld.
) 浏览器中的页面将如以下屏幕截图所示。 在上述方法中,代码直接返回了一个字符串。 你告诉系统只返回一些 HTML,它做到了!
ASP.NET MVC 根据传入 URL 调用不同的控制器类 (,并在其中调用不同的操作方法) 。 ASP.NET MVC 使用的默认 URL 路由逻辑使用如下格式来确定要调用的代码:
/[Controller]/[ActionName]/[Parameters]
URL 的第一部分确定要执行的控制器类。 因此 /HelloWorld 映射到 HelloWorldController
类。 URL 的第二部分确定要执行的类上的操作方法。 因此 ,/HelloWorld/Index 将导致 Index
执行 类的 HelloWorldController
方法。 请注意,我们只需要浏览到 /HelloWorld , Index
并且默认使用 方法。 这是因为未显式指定名为 的方法 Index
是将在控制器上调用的默认方法。
浏览到 http://localhost:xxxx/HelloWorld/Welcome
。 Welcome
方法运行并返回字符串“这是 Welcome 操作方法...”。 默认 MVC 映射为 /[Controller]/[ActionName]/[Parameters]
。 对于此 URL,采用 HelloWorld
控制器和 Welcome
操作方法。 目前尚未使用 URL 的 [Parameters]
部分。
让我们稍微修改示例,以便可以将一些参数信息从 URL 传递到控制器 (例如 /HelloWorld/Welcome?name=Scott&numtimes=4) 。 Welcome
更改方法以包含两个参数,如下所示。 请注意,该代码使用 C# 可选参数功能来指示如果未为该参数传递任何值, numTimes
则参数应默认为 1。
public string Welcome(string name, int numTimes = 1) {
return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}
运行应用程序并浏览到示例 URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)
。 可在 URL 中对 name
和 numtimes
使用其他值。 ASP.NET MVC 模型绑定系统会自动将命名参数从地址栏中的查询字符串映射到方法中的参数。
在这两个示例中,控制器一直在执行 MVC 的“VC”部分,即视图和控制器工作。 控制器将直接返回 HTML。 通常,你不希望控制器直接返回 HTML,因为这会变得非常繁琐的代码。 相反,我们通常使用单独的视图模板文件来帮助生成 HTML 响应。 接下来让我们看看如何执行此操作。