006.ASP.NET MVC ActionResults说明

原文: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说明,布布扣,bubuko.com

时间: 2024-10-26 08:12:58

006.ASP.NET MVC ActionResults说明的相关文章

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 Validating User Inputs Using Filters Working with HTML and Tag Helpers Creating Data-Driven Web Applications Implementing Authentication and Authorization W

ASP.NET MVC 基础

ASP.NET MVC oo1 Mvc准备工作课程安排:ORM->AspNet MVC开发环境:VS2012/VS2013SqlServer2008/2005主讲Asp.Net Mvc4 Razor官网:http://www.asp.net/mvc/mvc4 002 自动属性知识储备:自动属性隐式类型 var匿名类对象初始化与集合初始化扩展方法Lambda表达式Product(Id,Name,Description,Price,Category) 003 var关键字var num=10;var

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

译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 and .NET Core 1.0>.水平有限,各位阅读时仔细分辨,唯望莫误人子弟. 附英文版原文:Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC ------------------------------------ 本

ASP.NET MVC 源码分析(一)

ASP.NET MVC 源码分析(一) 直接上图: 我们先来看Core的设计: 从项目结构来看,asp.net.mvc.core有以下目录: ActionConstraints:action限制相关 AntiForgery:防伪相关 ActionResults:action返回对象相关 ApiExplorer:API描述和元数据相关接口 ApplicationModels:应用程序模型相关,应该是全局的model Areas:地区标签 Filters:大名鼎鼎的过滤器组件 Formatters:

ASP.NET MVC 使用Remote特性实现远程属性验证

RemoteAttribute是asp.net mvc 的一个验证特性,它位于System.Web.Mvc命名空间 下面通过例子来说明 很多系统中都有会员这个功能,会员在前台注册时,用户名不能与现有的用户名重复,还要求输入手机号码去注册,同时手机号码也需要验证是否重复,下面是实体类 /// <summary> /// 会员 /// </summary> public class Member { public int Id { get; set; } [Required(Error

95后实习生的远程办公体验(asp.net mvc\C#技术栈)

这个月我们做了一件别人看起来很疯狂的事情,就是让一批95后的实习生实行远程办公,效果还不错,于是写此文总结一下. 其实认真算算,我自己的远程工作经验有十年了吧,在北京工作的时候天气不好就申请在家办公,在硅谷的时候每周有三天在家办公,两天去办公室办公.所以我也算得上是远程办公的老司机了吧. 不过,我之前都是对有多年工作经验的老司机才实行远程办公,还从来没有对还未毕业的实习生实行过.老实说,不敢啊,也不放心,况且我在cnblogs博客园呆了十年,还真没见过对还未毕业的实习生实行过远程办公的. 那为什

ASP.NET MVC 4入门

一.MVC设计模式将Web应用分解成三个部分:模型(Models).试图(Views)和控制器(Controllers),这三部分分别完成不同的功能以实现Web应用. 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet.MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,不包括在视图上的业务流程的处理.业务流程的处理交予模型(Model)处理. 模型(Model)就是业务流程/状态的处理以及业务规则的制定

CRUD Operations In ASP.NET MVC 5 Using ADO.NET

Background After awesome response of an published by me in the year 2013: Insert, Update, Delete In GridView Using ASP.Net C#. It now has more than 140 K views, therefore to help beginners I decided to rewrite the article i with stepbystep approach u

ASP.NET MVC轻教程 Step By Step 6——改进表单

上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.BeginForm来创建form标签.这样我们可以将原来的表单改成如下代码. @{Html.BeginForm("Save", "Home"); } <label for="nickname">昵称</label> <in