原文:http://rachelappel.com/asp.net-mvc-actiohttp://i.cnblogs.com/EditPosts.aspx?postid=3857238&update=1nresults-explained

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说明的更多相关文章

  1. ASP.NET MVC 基础

    ASP.NET MVC oo1 Mvc准备工作课程安排:ORM->AspNet MVC开发环境:VS2012/VS2013SqlServer2008/2005主讲Asp.Net Mvc4 Raz ...

  2. ASP.Net MVC 之FileResult

    FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端.ASP.NET MVC定义了三个具体的FileResult,分 ...

  3. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...

  4. 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 ...

  5. Asp.net mvc 知多少(五)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  6. ASP.NET MVC扩展库

    很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...

  7. ASP.NET MVC 源码分析(一)

    ASP.NET MVC 源码分析(一) 直接上图: 我们先来看Core的设计: 从项目结构来看,asp.net.mvc.core有以下目录: ActionConstraints:action限制相关 ...

  8. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  9. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

随机推荐

  1. 如何安全地运行用户的 JavaScript 脚本

    本文来自网易云社区,转载务必请注明出处. 有时候我们需要运行用户输入的 JavaScript 脚本(以下简称脚本).对于我们来说,这些脚本是不可信任的,如果在当前的 Context 中运行这些脚本,它 ...

  2. 「HNOI 2013」游走

    题目链接 戳我 \(Solution\) 首先申明几个变量: f[x]:到点x的概率, vis[x]:x点的度 dp[x][y]:(x,y)这条边的概率 number[x][y]:x这条边的编号 下面 ...

  3. leetcode 18 4Sum JAVA

    题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出 ...

  4. POJ 3522 最小差值生成树(LCT)

    题目大意:给出一个n个节点的图,求最大边权值减去最小边权值最小的生成树. 题解 Flash Hu大佬一如既往地强 先把边从小到大排序 然后依次加入每一条边 如果已经连通就把路径上权值最小的边删去 然后 ...

  5. docker部署生产环境下的tomcat

    1. dockerfile文件 FROM tomcat:7-jre8 WORKDIR /etc COPY ./Shanghai /etc/localtime WORKDIR /usr/share/zo ...

  6. git的使用(入门)

    针对linux系统,全部采用shell命令的方式实现 一.查看相关信息 which -a git 查看git的安装位置git version 查看git的版本git help 学习相关的命令 二.gi ...

  7. CF1067D. Computer Game(斜率优化+倍增+矩阵乘法)

    题目链接 https://codeforces.com/contest/1067/problem/D 题解 首先,如果我们获得了一次升级机会,我们一定希望升级 \(b_i \times p_i\) 最 ...

  8. Q806 写字符串需要的行数

    我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行.我们给定了一个数组 width ...

  9. B: Break Prime

    题目描述 给定一个素数,试判断能否将该素数写为b3−a3 的形式,a,b皆为非负整数. 输入 多组输入 每行一个素数P (2≤P≤1015)   输出 若可以分解输出a,b(a<b) ,不能输出 ...

  10. Python爬虫常用之登录(三) 使用http请求登录

    前面说了使用浏览器登录较为简单,不需要过多分析,而使用请求登录恰恰就是以分析为主. 开发一个请求登录程序的流程: 分析请求->模拟请求->测试登录->调整参数->测试登录-&g ...