2.1 控制器的角色

MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model)。通过这种方式,MVC模式中的控制器主要关注的是应用程序流、输入数据的处理,以及对相关视图(View)输出数据的提供。

URL首先告知路由机制去实例化哪个控制器,调用哪个操作方法,并为该方法提供需要的参数。然后控制器的方法决定使用哪个视图,并对该视图进行渲染。

URL并不用存储在Web服务器磁盘上的文件有直接对应关系,而是与控制器类的方法有关。

2.2 示例应用程序:MVC Music Store

我们将要构建的应用程序是一个简单的音乐商店。该应用程序有三个主要部分:购物,结帐和管理。

访客可以按类型浏览相册:

他们可以查看单个相册并将其添加到购物车中:

他们可以查看购物车,删除他们不再需要的任何商品:

继续结帐将提示他们登录或注册用户帐户。

创建帐户后,他们可以通过填写运费和付款信息来完成订单。为了简单起见,我们正在进行一项惊人的促销活动:如果他们输入促销代码“免费”,一切都是免费的!

订购后,他们会看到一个简单的确认屏幕:

除了面向客户的页面,我们还将构建一个管理员部分,其中显示管理员可以创建,编辑和删除相册的相册列表:

2.3 控制器基础

2.3.1 简单示例:Home Controller

  • HomeController:负责网站根目录下的“home page”、“about page”和“contact page”。
  • AccountController:响应与账户相关的请求,比如登录和账户注册。

注意:这是一个相当简单的类,它继承了Controller基类。HomeController类的Index方法负责决定当浏览网站首页时触发的事件。

2.3.2 创建第一个控制器

首先创建一个控制器来处理有关浏览音乐目录的URL。这个控制器支持以下三个功能:

  • 索引页面列出商品店里面包含的音乐类型。
  • 单击一个流派,跳转到一个列出改流派下所有音乐专辑的页面。
  • 单击一个专辑,跳转到一个列出有关该专辑所有信息的页面。

1.创建新控制器

添加一个新的控制器StoreController

2.编写操作方法

新创建的StoreController控制器已经有了一个Index方法,下面将利用这个Index方法实现在页面上列出音乐商店里所有歌曲流派的功能。另外,还需要添加两个额外的方法来实现上述其他两项功能,这两个方法分别是Browse和Details。

3.经验总结

  • 不需要做任何额外配置,浏览/Store/Details就可以执行StoreController类中的Details方法,这就是操作中的路由。
  • 尽管是使用VS工具来创建这个控制器类,但它的确是一个非常简单的类。判别一个类是否是控制器类的唯一方式,就是查看该类是否继承自System.Web.Mvc.Controller。
  • 已经利用了一个控制器在浏览中显示了文本----没有用到模型和视图。控制器是真正的核心。每一个请求都必须通过控制器处理,而有的请求是不需要模型和视图的。

2.3.3 控制器操作的参数

前面的例子写出的是常量字符串。下一步就是让它们通过响应URL传进来的参数动态地执行操作。

控制器通过URL被调用,然后执行自定义的代码并返回一个视图。

2.4 小结

控制器是MVC应用程序的“指挥员”,它精确精密地编排用户、模型对象和视图的交互。同时控制器还负责响应用户输入,操纵正确的模型对象,然后选择合适的视图显示给用户以作为对用户最初输入的响应。

ASP.NET MVC5 高级编程-学习日记-第二章 控制器的更多相关文章

  1. ASP.NET MVC5 高级编程-学习日记-第一章 入门

    1.1 ASP.NET MVC 简介 ASP.NET是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架. 1.1.1 MVC模式 ...

  2. ASP.NET MVC5 高级编程-学习日记-第三章 视图

    开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...

  3. ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法

    参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...

  4. ASP.NET MVC5 高级编程 第3章 视图

    参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...

  5. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...

  6. Asp.net MVC4高级编程学习笔记-视图学习第一课20171009

    首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...

  7. ASP.NET MVC5高级编程 之 模型

    1. 为MVC Music Store建模 Models文件夹(右击) --> 添加 --> 类 为类添加对应的属性: public class Album { public virtua ...

  8. C#高级编程笔记之第二章:核心C#

    变量的初始化和作用域 C#的预定义数据类型 流控制 枚举 名称空间 预处理命令 C#编程的推荐规则和约定 变量的初始化和作用域 初始化 C#有两个方法可以一确保变量在使用前进行了初始化: 变量是字段, ...

  9. 学习《ASP.NET MVC5高级编程》——基架

    基架--代码生成的模板.我姑且这么去定义它,在我学习微软向编程之前从未听说过,比如php代码,大部分情况下是我用vim去手写而成,重复使用的代码需要复制粘贴,即使后来我在使用eclipse这样的IDE ...

随机推荐

  1. ZVulDrill渗透环境搭建及部分题目writeup

    一  实验环境 0x01  ZvulDirll 0x02  下载地址https://github.com/redBu1l/ZVulDrill 二  配置安装 0x01  在你网站的根目录下创建一个Vu ...

  2. Java学习笔记:知识总结

    概述 1991年由sun公司开发的名称为Oak的语言,1994年更名为Java. JDK:Java Development Kit,Java的开发和运行环境,Java的开发工具和JRE. JRE:Ja ...

  3. 使用Simple MvvmToolkit开发Android和iOS程序

    详情见:Android and iOS Development with Simple MVVM Toolkit? Yes you can! :http://blog.tonysneed.com/20 ...

  4. Python终端彩色字体的输出

    实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033 ...

  5. spring boot 实现mybatis拦截器

    spring boot 实现mybatis拦截器 项目是个报表系统,服务端是简单的Java web架构,直接在请求参数里面加了个query id参数,就是mybatis mapper的query id ...

  6. 第9章 符合Python风格的对象

    #<流畅的Python>读书笔记 # 第9章 符合Python风格的对象 # 本章包含以下话题: # 支持用于生成对象其他表示形式的内置函数(如repr().bytes(),等等) # 使 ...

  7. c# 抽象类和抽象方法

    参考:http://www.runoob.com/csharp/csharp-polymorphism.html https://zhidao.baidu.com/question/587686949 ...

  8. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (二)

    第二部分 邮件发送历史   一.第一封邮件   1.1969年10月,世界上的第一封电子邮件    1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短 ...

  9. HDU1864 最大报销额

    Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过6 ...

  10. spring 事务的传播特性

    1.声明式事物中,一个类serviceA的方法test1()调用另一个类serviceB的方法test2() 要是serviceB的test2()事务配置在xml文件中为REQUIRED,又在此方法上 ...