添加控制器 (VB)
作者: 里克·安德森
本教程将介绍如何使用 Microsoft Visual Web Developer 2010 Express Service Pack 1 生成 ASP.NET MVC Web 应用程序的基本知识,这是 visual Studio 的免费 Microsoft版本。 在开始之前,请确保已安装下面列出的先决条件。 可以通过单击以下链接来安装所有这些组件: Web 平台安装程序。 或者,可使用以下链接单独安装各个必备软件:
如果使用 Visual Studio 2010 而不是 Visual Web Developer 2010,请单击以下链接安装必备组件: Visual Studio 2010 先决条件。
本主题随附了具有 VB.NET 源代码的 Visual Web 开发人员项目。 下载 VB.NET 版本。 如果需要 C#,请切换到 本教程的 C# 版本 。
MVC 代表 model-view-controller。 MVC 是用于开发应用程序的模式,因此每个部分都有单独的责任:
- 模型:应用程序的数据。
- 视图:应用程序用于动态生成 HTML 响应的模板文件。
- 控制器:处理应用程序传入 URL 请求的类、检索模型数据,然后指定呈现对客户端的响应的视图模板。
本教程将介绍所有这些概念,并介绍如何使用它们生成应用程序。
通过在解决方案资源管理器中右键单击“控制器”文件夹并选择“添加控制器”来创建新控制器。
将新控制器命名为“HelloWorldController”,然后单击“ 添加”。
请注意,右侧解决方案资源管理器已为你命名HelloWorldController.cs创建了一个新文件,并且该文件已在 IDE 中打开。
在新 public class HelloWorldController
块中,创建两个类似于以下代码的新方法。 我们将直接从控制器返回 HTML 字符串作为示例。
Namespace MvcMovie
Public Class HelloWorldController
Inherits System.Web.Mvc.Controller
Public Function Index() As String
Return "This is my default action..."
End Function
Public Function Welcome() As String
Return "This is the Welcome action method..."
End Function
End Class
End Namespace
控制器已命名 HelloWorldController
,新方法已命名 Index
。 运行应用程序(按 F5 或 Ctrl+F5)。 浏览器启动后,将“HelloWorld”追加到地址栏中的路径。 (在我的计算机上,是 http://localhost:43246/HelloWorld
)浏览器将如下所示。 在上述方法中,代码直接返回字符串。 我们告诉系统只是返回一些 HTML, 它做到了!
ASP.NET MVC 会根据传入 URL 调用不同的控制器类(以及其中的不同操作方法)。 ASP.NET MVC 使用的默认映射逻辑使用如下所示的格式来控制调用的代码:
/[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
是方法。 我们尚未使用 [Parameters]
URL 的一部分。
让我们稍微修改一下示例,以便我们可以将某些参数信息从 URL 传递到控制器(例如 /HelloWorld/Welcome?name=Scott&numtimes=4)。 Welcome
更改方法以包含两个参数,如下所示。 请注意,我们已使用 VB 可选参数功能来指示如果没有为该参数传递任何值,则 numTimes
参数应默认为 1。
Public Function Welcome(ByVal name As String, Optional ByVal numTimes As Integer = 1) As String
Dim message As String = "Hello " & name & ", NumTimes is: " & numTimes
Return "" & Server.HtmlEncode(message) & ""
End Function
运行应用程序并浏览到 http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4
。 可以尝试 name
不同的值和 numtimes
。 系统会自动将地址栏中查询字符串中的命名参数映射到方法中的参数。
在这两个示例中,控制器一直在执行 MVC 的 VC 部分,即视图和控制器的工作。 控制器将直接返回 HTML。 通常,我们不希望控制器直接返回 HTML,因为这对代码非常繁琐。 相反,我们通常会使用单独的视图模板文件来帮助生成 HTML 响应。 让我们看看我们如何做到这一点。