006.ASP.NET MVC ActionResults说明
1.前言
Action Result在ASP.NET MVC控制器系统中是非常重要的,我们要时常关注这些。理解它们是怎么给我们带来更多的选择会让你的代码更加健壮。
2.什么是Action Result
Action Result是控制器方法(动作方法)的返回类型,作为基础类,为*Result类服务。一个动作方法传递模型到视图、文件流、重定向到新的控制器,会对手上的工作所必需的。控制器作为系统的组成部分,就像一个交通警察。
有许多衍生的ActionResult类型可以作为一些特定视图的特定的返回值。将鼠标悬浮在一个方法的上面,你可以快速浏览这些ActionResult类型,这是由IDE提供的TOOL窗口(PS:看到下面的评论,这个是需要下载一个插件的,个人觉得没有必要下载)。
在详细的提示下,tab下列出一系列的从ActionResult衍生出的类型。尽管这些提示只在获取焦点时才能看到,我们也希望能在其它地方看到这些返回类型的简短的说明,比如引用或者返回这些类型的时候。
(PS:下面的这张图片是作者IDE的,我们的话,需要下载插件,但出来的效果可能会有些差异。)
如果想更深层次地了解什么是ActionResult和它是怎么工作的,可以在方法的结尾设置一个断点,我们可以看到非常详细的信息,在断点查看窗口Watch Window中查看,如下图
注意到里面的模型,ViewBag ViewData TempData,在这个练习中,在窗口中可以看出这些都是强类型的,都是Object类型的容器。
这些在视图中使用的对象正是你所需要的。当然Model是经常使用的,包含我们程序中使用的一系列其它对象。TempData对象用于控制器之间传递数据,ViewData和ViewBag用于控制器和视图之间传递数据。
Model属性是传递给视图的模型,它的数据类型需要与视图中的标签@model搭配使用,请看上面的图片,Model属性包含强类型的Product对象(也可以是你想要返回的对象)是与视图中的模型相匹配的。
看到Watch窗口中,运行时将一个ActionResult转换成一个ViewResult,然而如果你想要在设计时得到更多的具体的信息,转换ActionResult到特定或者衍生出来的类,比如,一个ViewResult产生一个与ActionResult相同结构的对象。其中,使用强类型会使用代码更加准确,对象的判断发生在编译时,而不是在运行时。
3.动作方法及其结果、路由
动作方法和路由在所有的MVC程序中一起使用。MVC实现这些通过使用一个集合的转换,global.asax.cs文件中写定义路由的模版。这些模版将HTTP请求与控制器和动作方法联系在一起。当一个HTTP请求一个路由系统的时候,它会选择使用哪一个方法运行以返回相应的视图。
global.asax.cs文件中定义这些模版,如{controller}/{action}/{id} (PS:路由的选择在之前的文章中都有,可以查看,自己也是想用来巩固自己已有的知识)
(PS:现在发现自己没有一些国外优秀的IT网站,一些深层次的文章自己也看得迷迷糊糊,希望大家能推荐几个好的网站或者一些IT大神的BLOG,自己也想加倍地学习,给自己时间真心不多,学习的时间真心少了,3Q)
006.ASP.NET MVC ActionResults说明的更多相关文章
- ASP.NET MVC 基础
ASP.NET MVC oo1 Mvc准备工作课程安排:ORM->AspNet MVC开发环境:VS2012/VS2013SqlServer2008/2005主讲Asp.Net Mvc4 Raz ...
- ASP.Net MVC 之FileResult
FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端.ASP.NET MVC定义了三个具体的FileResult,分 ...
- C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...
- Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC
What's In This Chapter? Features of ASP.NET MVC 6 Routing Creating Controllers Creating Views Valida ...
- Asp.net mvc 知多少(五)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- ASP.NET MVC 源码分析(一)
ASP.NET MVC 源码分析(一) 直接上图: 我们先来看Core的设计: 从项目结构来看,asp.net.mvc.core有以下目录: ActionConstraints:action限制相关 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...
随机推荐
- user profile信息同步问题
经过下午的远程会议, 该问题已经解决. 以下为小结以及针对AD同步账号的权限配置的要求: 纠正: 1. 将现有的所有User Profile Service Application 删除 2. 执行I ...
- LA 3401
彩色立方体. [分析] 弄清楚24种状态,可以由标准姿态旋转而来. 计算24种状态: #include <iostream> #include <string> ,,,,, } ...
- ListView ,GridView 通用适配器
前言 接近半年的时间没有写博客了,今年公司的项目有点多,比较忙,没时间写,这是其一.其次是,这半年来,有时间的时候,我都会看看自己以前写的博客,也许是以前刚刚写博客,经验不足,感觉写出来的博客质量很不 ...
- Python——深拷贝和浅拷贝
深拷贝.浅拷贝 1. 浅拷贝 浅拷贝是对于一个对象的顶层拷贝 import copy a = [[1, 2], 3] b = copy.copy(a) print(id(a)) print(id(b) ...
- Mac下显示和隐藏“隐藏文件”
命令行方式:显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFi ...
- windows10下使用ubuntu,并搭建nodejs环境
1.首先要在win10的设置里打开开发人员使用模式 2.在bash下,下载ubuntu系统 3.安装git,因为要把下载nvm的话,需要git sudo apt-get install git 4.安 ...
- C#-WinForm-★★★★★跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口★★★★★
构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用——简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的 ...
- Windows 64位操作系统下安装和配置MySQL
一安装方式 MySQL安装文件分为两种,一种是MSI格式的,一种是ZIP格式的.下面来看看这两种方式: MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,Windows操作系统下一般MySQ ...
- 自己写的第一个Schema文件
<Schema name="FinSchema" description="财务模式" measuresCaption="财务模式"& ...
- Linux Python import jenkins 报错 oserror: /usr/lib/python2.7/site-packages/lookup3.so
安装了jenkins和Python-jenkins后,在脚本中import jenkins会报错:oserror: /usr/lib/python2.7/site-packages/lookup3.s ...