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. windows下忘记mysql的root密码

    1.停止mysql 2.命令行启动mysqlmysqld --defaults-file="c:\mysql\mysql server 5.1\my.ini" --console ...

  2. service层代码相互调用, 导致spring循环依赖,设计上的优化

    管理员创建用户需要发送激活邮件, 而发送激活邮件的时候需要判断发件人是不是合法的用户, 因此设计到一个循环依赖的问题 //UserService @Service class UserService{ ...

  3. 【WebService】使用CXF开发WebService(四)

    CXF简介 Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.CXF 继承了 Celtix ...

  4. 【Linux】DNS基础(一)

    DNS基础 DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 ...

  5. Java 读取HDFS文件系统

    最近有个需求,计算用户画像. 系统大概有800W的用户量,算每个用户的一些数据. 数据量比较大,算用hive还是毫无压力的,但是写的oracle,在给出数据给前端,就比较难受了. 然后换了种解决方法: ...

  6. Eclipse的SVN插件使用

    1       eclipse的SVN插件使用 1.1     svn插件安装 下载Subversion的eclipse插件 http://subclipse.tigris.org/servlets/ ...

  7. 2018.12.15 codeforces 920F. SUM and REPLACE(线段树)

    传送门 线段树入门题. 给你一个序列:支持区间修改成自己的约数个数,区间求和. 实际上跟区间开方一个道理. 2的约数个数为2,1的约数个数为1,因此只要区间的最大值小于3就不用修改否则就暴力修改. 因 ...

  8. scrapy知识积累

    Scrapy 中文文档https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html 创建项目 scrapy startproje ...

  9. 第四章,java面向对象特性

    4.1 特性 封装,继承, 多态(编译时:方法的重载,同一个类里面不同方法可以用同一个方法名只是传入参数不同, 运行时多态:基础类提供一个接口,在编译时只调用基础类的接口,在运行时才确定到底是哪一个子 ...

  10. UVaLive 3490 Generator (KMP + DP + Gauss)

    题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度. 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp ...