MVC 音乐商店 第 2 部分: 控制器

MVC 音乐商店是介绍,并分步说明了如何使用 ASP.NET MVC 和 Visual Studio 为 web 开发教程应用程序。

MVC 音乐商店是一个轻量级的示例存储实现它卖音乐专辑在线,并实现基本的网站管理、 用户登录,和购物车功能。

这个系列教程详细说明所有为构建 ASP.NET MVC 音乐商店示例应用程序采取的步骤。第 2 部分包括控制器。

与传统的 web 框架,传入的 Url 通常映射到磁盘上的文件。例如: 一个 URL 的请求喜欢"/ Products.aspx"或"/ Products.php"可能由"Products.aspx"或"Products.php"的文件处理。

基于 web MVC 框架将 Url 映射到服务器代码的方式略有不同。而不是将传入的 Url 映射到的文件,他们反而 URLs 映射到类上的方法。这些类称为"控制器"和他们都是负责处理传入的 HTTP 请求,处理用户输入,检索和保存数据,以及确定响应发送回客户端 (显示 HTML、 下载文件、 重定向到一个不同的 URL,等等)。

添加 HomeController

我们会首先我们的 MVC 音乐商店应用程序添加一个控制器类,将处理 Url 到我们网站的主页。我们会遵循 ASP.NET MVC 的默认的命名约定,并称之为 HomeController。

右键单击解决方案资源管理器内的"控制器"文件夹并选择"添加",然后在"控制器..."命令:

这将打开"添加控制器"对话框。名称"HomeController"的控制器,然后按添加按钮。

这将创建一个名为 HomeController.cs 的新文件,其中包含以下代码:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;
 
namespace MvcMusicStore.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }
    }
}

让我们先从简单的开始,用一个简单的方法来替换 Index 方法,以便只返回一个字符串。我们会两项更改:

  • 更改该方法返回一个字符串,而不是一个
  • 更改返回语句,以返回“Hello from Home”

方法现在看起来应像这样:

public string Index()
{
    return "Hello from Home";
}

运行应用程序

现在让我们运行网站。我们可以开始我们的 web 服务器,并尝试使用以下任何的网站::

  • 选择调试 ⇨ 开始调试菜单项
  • 单击工具栏中的绿色箭头按钮
  • 使用键盘快捷方式,f5 键。

使用任何上述步骤将编译我们的项目,然后导致是建到 Visual Web Developer 要启动 ASP.NET 开发服务器。通知将显示在右下角的屏幕上,表明 ASP.NET 开发服务器已经开始了,并将显示的端口号它运行在下。

Visual Web Developer 然后会自动打开一个浏览器窗口,其 URL 指向我们的 web 服务器。这将使我们能够快速地试用我们的 web 应用程序:

好吧,那是非常快的 — — 我们创造了一个新的网站,添加三个线函数,还有我们的文本在浏览器中。虽然现在还很简单,但这只是一个开始。

注意: Visual Web Developer 包括 ASP.NET 开发服务器,将在一个随机免费"端口"号运行您的网站。在上面的截图,该站点运行在 http://localhost:26641/,所以它使用端口 26641。你的端口号会有所不同。当我们谈论时 URL 的像 /Store/Browse 在本教程中,就会在端口号后。假设 26641 一个端口号,浏览到 /Store/Browse 将意味着浏览到 http://localhost:26641/存储/浏览。

添加 StoreController

我们添加了简单的 HomeController 实现我们网站的主页。现在,让我们添加我们用来实现我们的音乐商店浏览功能的另一个控制器。我们的存储控制器将支持三种情形:

  • 在我们的音乐商店音乐流派清单页面
  • 列出了所有在一种特定的风格音乐专辑浏览页
  • 详细信息页,其中显示有关特定音乐专辑信息

我们先通过添加一个新的 StoreController 类...如果您还没有停止运行该应用程序,或者通过关闭浏览器选择调试 ⇨ 停止调试菜单项。

现在,添加新的 StoreController。就像我们做了与 HomeController、 我们会这样做,请在解决方案资源管理器内的"控制器"文件夹上右键单击并选择添加-> 控制器菜单项

我们新的 StoreController 已经有一个“Index”方法。我们将使用此“Index”方法来实现我们的列表页面,在其中列出我们音乐商店里的所有流派。我们还将添加两个附加的方法来实现我们想要 StoreController 来处理的其他两个方案:Browse 和 Details。

这些方法(Index、Browse 和 Details)在我们的控制器中称为“控制器操作”,就像你已经看到的 HomeController.Index() 操作方法一样,它们的工作是对 URL 请求做出响应并(一般来说)确定将哪些内容发送回浏览器或调用 URL 的用户。

我们会通过更改 theIndex() 方法返回的字符串"Hello 从 Store.Index()"开始我们的 StoreController 实现和我们将为 browse () 和 Details() 中添加类似的方法:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.Mvc;
 
namespace MvcMusicStore.Controllers
{
    public class StoreController : Controller
    {
        //
        // GET: /Store/
        public string Index()
        {
            return "Hello from Store.Index()";
        }
        //
        // GET: /Store/Browse
        public string Browse()
        {
            return "Hello from Store.Browse()";
        }
        //
        // GET: /Store/Details
        public string Details()
        {
            return "Hello from Store.Details()";
        }
    }
}

再次运行该项目,并浏览以下 Url:

  • /Store
  • /Store/Browse
  • /Store/Details

访问这些 Url 将调用内我们的控制器的操作方法,并返回字符串响应:

很好,但这些只是常量字符串。让我们使他们动态的所以他们从 URL 中获取信息并在页面输出中显示它。

首先我们会改变要从 URL 中检索查询字符串值的浏览操作方法。通过将"流派"的参数添加到我们的操作方法,我们可以这样做。当我们这样做时 ASP.NET MVC 将自动传递命名为"流派"到我们的操作方法被调用时任何查询字符串或窗体 post 参数。

//
// GET: /Store/Browse?genre=Disco
public string Browse(string genre)
 {
    string message = HttpUtility.HtmlEncode("Store.Browse, Genre = "
+ genre);
 
    return message;
 }

注意: 我们使用 HttpUtility.HtmlEncode 实用程序方法来清理用户输入。这样可以防止用户从 Javascript 注入我们认为带有像 /Store/Browse 的链接吗?流派 = < 脚本 > window.location= 'http://hackersite.com' < / 脚本 >。

现在让我们浏览到 /Store/Browse?Genre=Disco

让我们下一步更改的详细信息操作来读取和显示名为 ID 的输入的参数与我们前面的方法,不同的是我们不会将嵌入的 ID 值作为查询字符串参数。相反我们会直接在 URL 本身内嵌入。例如: /Store/Details/5。

ASP.NET MVC 让我们轻松地执行此操作而无需进行任何配置。ASP.NET MVC 的默认路由公约是治疗后的操作方法名称的 URL 的部分作为名为"ID"的参数。如果您的操作方法有一个名为 ID 参数然后 ASP.NET MVC 将自动 URL 段到你作为参数进行传递。

//
// GET: /Store/Details/5
public string Details(int id)
 {
    string message = "Store.Details, ID = " + id;
 
    return message;
 }

运行该应用程序并浏览到 /Store/Details/5:

让我们回顾一下我们到目前为止做:

  • 在 Visual Web Developer 我们创造了一个新的 ASP.NET MVC 项目
  • 我们已经讨论了 ASP.NET MVC 应用程序中的基本的文件夹结构
  • 我们学会了如何运行我们的网站使用 ASP.NET 开发服务器
  • 我们已经创建了两个控制器类: HomeController 和 StoreController
  • 我们为我们的控制器的响应 URL 请求并返回到浏览器中的文本添加了操作方法

你可能感兴趣的:(MVC 音乐商店 第 2 部分: 控制器)