【翻译】MVC Music Store 教程-概述(三)

Controller

与传统的Web框架,将传入的URL通常映射到磁盘上的文件。例如:一个URL请求“/Products.aspx"
或"/Products.php”是处理一个Products.aspx" 或 "Products.php”的文件

MVC框架传入的URL与映射到服务器代码有所不同,而不是将URL传入文件,而是映射到方式方法或者类,这些类被称为”Controller“,他们负责处理传入的HTTP请求,处理用户输入,检索和保存数据,并且决定将的数据返回到客户端(显示URL,下载文件,跳转到不同的URL,等等)。

添加HomeController

我们将在MVC Music
Strore项目中新增一个Controller,用它来处理网站的首页请求,我们遵循ASP.NET
MVC的默认命名规则,命名为HomeController.

在Solution
Explorer中右键”Controller“文件夹,选择”Add“,选择”Controller“

在弹出的”Add
Controller“对话框中,给Controller命名为“HomeController”点击“Add”按钮

接着会创建一个新文件,HomeController.cs 代码如下:

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Mvc;
6
7 namespace MvcMusicStore.Controllers
8 {
9 public class HomeController : Controller
10 {
11 //
12 // GET: /Home/
13
14 public ActionResult Index()
15 {
16 return View();
17 }
18
19 }
20 }

为了尽可能的简单,我们让Index方法简单的返回一个字符串,我们需要做两处修改:

  • 将方法的返回类型修改为String,而不是ActionResult

  • 将返回值语句修改为“Hello from Home”

方法修改后为“

1 public string Index()
2 {
3 return "Hello from Home";
4 }

运行应用程序

现在我们运行应用程序,我们可以启动web服务,通过下面任何一种方法:

  • 选择Debug—>开始Debugging菜单

  • 点击工具条上的绿色运行按钮

  • 用键盘上的快捷键。F5

使用上面任何一种方法,都会编译我们的项目,从而启动内置的ASP.NET开发服务器,在屏幕的底部会有通知提示ASP.NET服务器已经启动,并且显示应用程序运行的端口号。

Visual Web
Developer将会自动的打开一个浏览器,并且指向我们的请求地址。这将会使我们快速的使用我的程序:

OK,非常简单-我们创建了一个新的网站,添加了三行函数,在浏览器上显示一些文本,一切都很简单,不过这是个开始。

添加一个StoreController

我们添加了一个简单的HomeController来实现我们的首页功能,接下来,我们添加另一个Controller是实现音乐商店的浏览功能,Stroe
Controller将支持三个场景:

  • 列出商店中所有的音乐风格的列表

  • 专辑浏览页面,列举出某个流派下的所有专辑

  • 显示某个专辑的明细信息

我们从添加一个新的StoreController开始,如果你没有准备好,先关闭程序,可以直接关闭浏览器或者从”Debug—>Stop
Debugging“菜单中选择停止程序。

像添加HomeController一样添加StoreController,在Solution
Explorer中右键”Controller“文件夹,选择”Add“,选择”Controller“

StroeController已经有”Index“方法,我们将用”index“方法来实现音乐商店中的所有分类列表,我们将添加额外的两个方法,来实现”浏览“和”明细“。

这些方法(Index,Browse和Details)在控制器内部被称为”Controller
Action“,你已经看到在HomeController中的Index()方法,它的工作就是请求URL,确定哪些内容需要被返回到浏览器或。

我们将开始在StroeController的Index()中返回字符串”Hello
from stroe.Index()“,再添加相似的方法Browse(),Details().

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Mvc;
6
7 namespace MvcMusinStore.Controllers
8 {
9 public class StoreController : Controller
10 {
11 //
12 // GET: /Store/
13
14 public string Index()
15 {
16 return "Hello from Store.Index()";
17 }
18
19 public string Browse()
20 {
21 return "Hello from Store.Browse()";
22 }
23
24 public string Details()
25 {
26 return "Hello from Store.Details()";
27 }
28
29 }
30 }

再次运行项目,访问以下地址

  • /Store

  • /Store/Browse

  • /Store/Details

这些方法将返回我们在Action中返回的字符串

太棒了,但是这些仅仅是固定的字符串,我们让他变得动态一点,从url中获取一些其他信息,再把它们显示在页面上。

首先,我们从Browse
Action中获取URL中的参数值,我们可以在Action中增加一个”genre“参数,ASP.NET
MVC会自动传递名为genre赋值给它。

1 //
2 // GET: /Store/Browse?genre=Disco
3 public string Browse(string genre)
4 {
5 string message = HttpUtility.HtmlEncode("Store.Browse, Genre = " + genre);
6 return message;
7 }

现在我们浏览这个地址:/Store/Browse?Genre=Disco

接下来,我们修改Details
Action,用来读取和显示一个输入参数,参数名为ID,不同于之前的方法,这次我们不在请求参数中传递这个参数,而是在请求的 URL
地址中。例如:/Store/Details/5。

ASP.NET MVC中,我们可以不需要配置任何东西,ASP.NET
MVC默认路由会Action后面的部分看作名为ID的参数值,如果你的 Action 方法有一个名为 ID 的参数,那么,ASP.NeT MVC
就会自动将这部分作为参数传送给 Action 方法。

1 //
2 // GET: /Store/Details/5
3 public string Details(int id)
4 {
5 string message = "Store.Details, ID = " + id;
6 return message;
7 }

现在我们浏览这个地址: /Store/Details/5:

让我们做个总结吧

  • 创建了一个 ASP.NET MVC 项目

  • 讨论了项目的基本文件夹,以及作用

  • 学习了如何运行开发服务器

  • 创建了两个控制器 HomeController 和 StoreController

  • 为控制器增加了 Action 方法。

【翻译】MVC Music Store 教程-概述(三),布布扣,bubuko.com

时间: 2024-12-06 13:24:46

【翻译】MVC Music Store 教程-概述(三)的相关文章

【翻译】MVC Music Store 教程-概述(一)

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

Spring mvc 4系列教程(三)—— Spring4.X的新特性

1.Spring4.0的新特性 从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持:Spring2.5提出了注解驱动(annotation-driven)配置:Spring3.0引入了跨框架代码库的java 5+.基于java的Configuration模型等. Spring 4.0是最近发布的主要版本,而且对java8完全支持.当然,你可以继续使用低版本的java,但最低只能是java SE6.Spring 4.0里

2017.3.31 spring mvc教程(三)请求映射(静态文件访问、拦截器)

学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变化比较大的功能. spring mvc教程(三)拦截器 1.Spring中的拦截器 (1)拦截器接口 Spring提供了拦截器接口.实现这个接口或继承这个类,就能实现自己的拦截器. 1 org.springframework.web.servlet.HandlerInterceptor接口 2 or

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

NeHe OpenGL教程 第三十八课:资源文件

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十八课:资源文件 从资源文件中载入图像: 如何把图像数据保存到*.exe程序中,使用Windows的资源文件吧,它既简单又实用. 欢迎来到NeHe教程第38课.离上节课的写作已经有些时日了,加上写了一整天的code,也许笔头已经

微信公众平台开发教程(三) 基础框架搭建

微信公众平台开发教程(三) 基础框架搭建 上一章,我们已经初步讲解了微信公众账号开发的基本原理,今天我们来探索设计实现. 首先我们设计了模块层次图,当然图中只是给出一种实现方式,不局限于此.具体见下图. 主要功能介绍如下: 1)请求接口层.处理HTTP请求,及响应 2)分发层.由接口层传入请求,然后具体分析请求类型,分发至不同的处理器 3)业务逻辑层.这里是我们的具体业务逻辑了,根据请求,实现具体的业务逻辑. 4)数据层.我们在实现某个应用时可能需要访问数据,可以是数据库或者是文件.如果是简单应

ASP.NET MVC 5 入门教程 (2) 控制器Controller

上一节:ASP.NET MVC 5 入门教程 (1) 新建项目 源码下载:点我下载 顾名思义,一个MVC项目是由M-Model-模型.V-View-视图.C-Controller-控制器这三部分组成.关系图如下所示. 先撇开MVC的整体运行机制不谈,我们可以看到用户发起的请求首先会到达控制器Controller. 控制器的定义:控制器是一种类,它可以处理浏览器发来的请求,从模型(Model)中获取数据,然后将处理后的数据通过视图(View)发送给浏览器. 我们首先创建一个Controller.在

(译)Windsor入门教程---第三部分 编写第一个Installer

简介 在第二部分我们创建了控制器工厂.现在我们要把我们的控制器交给Windsor来管理. Installer Windsor有一个专门的类installer.cs,用来向容器注册组件.在你的应用程序中至少会有几个这样的installer类,所以要保持他们的代码整洁以及可见性.接下来在我们的应用程序中新建一个专门的文件夹"Installer"来存放这些类.我们首先要注册到容器中的就是控制器,所以我们先来新建一个ControllersInstaller.cs类. Controller in

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证 要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单. 使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以),一些开发的准备工作见文