请注明转载地址:http://www.cnblogs.com/arhat

  上一章,我们阐述了Controller,Action和ActionResult所代表的含义及使用,本章继续研究ActionResult。因为ActionResult是Action的返回值,所代表的意义就是Action执行后的结果,比较重要,所以本章重点将介绍ActionResult和他的子类。
由于上一章我们讲了ActionResult的一个子类ViewResult,我们知道了ViewResult就是代表视图的意思,根据Action的返回值决定调用那个View。我们从帮助文档上看,可以知道ActionResult的子类有下面几种。

ViewResult 表示HTML的页面内容
EmptyResult 表示空白的页面内容
RedirectResult 表示定位到另外一个URL
JsonResult 表示可以运用到AJAX程序中JSON结果
JavaScriptResult 表示一个JavaScript对象
ContentResult 表示一个文本内容
FileContentResult 表示一个可以下载的、二进制内容的文件
FilePathResult 表示一个可以下载的、指定路径的文件
FileStreamResult 表示一个可以下载的、流式的文件

大家可以看到Action的子类常用的有9个,分别代表了不同的含义,根据具体的情况使用具体的子类。由于子类比较多,本章将讲解EmptyResult,RedirectResult,ContentResult这三种。剩余的几种类型我们在后面的章节继续讲解。
一、EmptyResult表示空白的页面内容
顾名思义,Emty是空白的意思,也就是说这个结果代表了一个空的页面内容。我们先看一下EmptyResult的执行效果,然后分析他的更能!打开我们的项目“Com.ArHat.Web”。更改一下HomeController的Index方法。

public ActionResult Index()
{ return new EmptyResult();
}

既然是EmptyResult,那么就不需要有一个视图文件和Index方法名对应。然后我们预览一下效果:

大家可以看到浏览器显示的空的页面,同时我们查看一下源代码,发现也是空的。那么Empty既然是空的,那么有什么用呢?这个EmptyResult可以说起到一个中转的作用,起到适配器的作用,如果我们有些请求只是要求统计一下数量并不需要显示页面,则这个Empty就起到了作用。

二、RedirectResult表示定位到另外一个URL

看到这个名字后,我们从名字翻译过来就是重新定位到一个结果,很显然就是提到了一个跳转的作用,主要作用就是要跳转到其他的网址。我们更改一下HomeController的代码,我们添加一个About的方法。然后给About方法添加一个视图文件About.cshtml文件,然后更改Index方法,让我们浏览器预览Index方法时候,直接跳转到About动作上。

public class HomeController : Controller
{ public ActionResult Index()
{ //当然也可以跳转到其他的网站上,这个是必须的 //return Redirect("http://www.cnblogs.com/arhat"); return Redirect("/Home/About");
} public ActionResult About()
{ return View();
} }

预览结果如图:

大家可以看到,我们预览的是Index,但是由于Index中使用了Redirect()方法,返回的是RedirecResult,所以跳转到了About了。那么在Controller中,提供了Redirect()方法是专门针对RedirectAction的。我们来看一下这个方法的定义。
protected internal virtual RedirectResult Redirect(string url);

参数url就是要重定向到的url地址。这个方法的作用就是Response.Redirect。

ContentResult表示一个文本内容

同样的,从名字上我们看到这个是文本内容的结果,这个就有点意思了,为什么呢?大家注意了这里的Content指的是“文本”,还记得老魏曾经给大家见过的”文本”的含义吗?就是原格式。不会被解析的内容,但是这里的“文本”的含义包含了html,如果是html内容,那么输出的结果会被解析,但是需要注意的是对于javascript脚本也会被执行。那么这个ContentResult就是这个效果,同样的,在使用ContentResult的时候也不需要对应的View.说白了这个返回值和下面的两句话可以说是对等的。

Response.Write(“内容”);
Response.End();

我们来看一个例子吧。修改一下Index的代码:

public ActionResult Index()
{ //return Content("你好啊ContentResult"); //return Content("<script>alet('你好啊ContentResult')</script>"); return Content("<font color='red'>你好啊ContentResult</font>");
}

那么大家可以运行一下效果,分别取消注释,大家看看结果是什么!提示一下,注意查看一下运行后的源码哦!
   当然这里也有一点小技巧,如果大家使用Ajax异步请求的话,返回的值是text类型的,那么大家可以使用这个ContentResult哦。希望大家复习一下老魏教你们的AjaxInvoke这个框架,其实ContentResult实现的原理和AjaxInvoke一样的。

从上面我们看到了,我们使用的是Controller提供的Content方法,我们来看一下这个方法的定义:

protected internal ContentResult Content(string content);    

   protected internal ContentResult Content(string content, string contentType);      

   protected internal virtual ContentResult Content(string content, string contentType, Encoding contentEncoding);

大家可以看到这个方法被重载了3次,作用都是一样的。第一个我这里就不在讲解了。第二个是多一个了参数contentType,用来说明输入内容的格式。大家可以查看一些MIME类型,但是注意不是所有的MIME类型都被这个方法所支持,仅支持一些表示文本的contentType,比如”text/html”,”text/plain”,”text/xml”等等。
   第三个函数,大家可以看出,无非是声明一下内容的编码而已了,这个编码老魏以前给大家经过,尤其是“三码合一”这个知识。

这三个函数,大家可以根据实际情况选择一下。好了,本章就到这里吧,下一章,我们继续其他的ActionResult.

一步步学习ASP.NET MVC3 (8)——EmptyResult,ContentResult,RedirectResult的更多相关文章

  1. 一步步学习ASP.NET MVC3 章节总结

    请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...

  2. 一步步学习ASP.NET MVC3 (1)——基础知识

    请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学 ...

  3. 一步步学习ASP.NET MVC3 (3)——Razor(1)

    请注明转载地址:http://www.cnblogs.com/arhat 首先这个<一步步学习ASP.NET MVC3>前段时间有些忙,没有顾得上写文章,昨天呢写了3个和ASP.NET的相 ...

  4. 一步步学习ASP.NET MVC3 (12)——FileResult

    请注明转载地址:http://www.cnblogs.com/arhat 忙了两天,本来老魏昨天就应该写出新的文章,但是由于昨天雨夹雪而且加上昨天晚上加了班,到家都没饭吃了,一看时间都9点了,什么饭店 ...

  5. 一步步学习ASP.NET MVC3 (2)——入门程序

    请注明转载地址:http://www.cnblogs.com/arhat 在上一节中,我们只是简单的介绍了什么是MVC及MVC的运行原理.而本节呢,主要来实现下一ASP.NET MVC3的开发流程,并 ...

  6. 一步步学习ASP.NET MVC3 (14)——Route路由

    请注明转载地址:http://www.cnblogs.com/arhat 由于今天是星期六,所以多写几篇,感觉前几天的忙碌没有及时发布文章,趁着周末老魏尽力的多写几篇文章.因为本系列基本上快结束了,所 ...

  7. 一步步学习ASP.NET MVC3 (5)——View从Action中获得数据

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们把Razor的模板技术给大家介绍了一下,当然模板中还有其他的知识点,这个以后我们还会继续讲解.本章我们主要讨论 ...

  8. 一步步学习ASP.NET MVC3 (6)——@helper,@functions

    请注明转载地址:http://www.cnblogs.com/arhat 在前一章中,我们讲述了View如何从Action中获得数据,并显示出来,但随着需求的变化,我们可能要对View中显示的数据作出 ...

  9. 一步步学习ASP.NET MVC3 (7)——Controller,Action,ActionResult

    请注明转载地址:http://www.cnblogs.com/arhat 前面几章我们讲解的都是关于View方面的知识,虽然还有很多关于View的知识没有讲,但是没关系,我们在后面使用到的时候在讲解, ...

随机推荐

  1. Android(java)学习笔记128:使用proguard混淆android代码

    1.当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,an ...

  2. dig命令浅析

    dig命令,功能更强大的命令. man dig dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] \ [-p ...

  3. Javascript做图片无缝平滑滚动

    因需要,google得到.作者不详.多谢.我这里略作修改.只是改变了ID. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  4. Java内存溢出示例

    按照java内存的结构,发生内存溢出的地方常在于堆.栈.方法区.直接内存. 一.堆溢出 堆溢出原因莫过于对象太多导致,看代码: /** * java 堆溢出 * VM Args:-Xms20m -Xm ...

  5. C语言碰到的一元二次方程

    最近开始在学习C语言,看视频,是http://www.rjzxw.com/jc-74-1.html 碰到老师讲的一元二次方程例子,不懂,所以找了下资料,看了网上一元二次方程的视频(是自己太浮躁了,听不 ...

  6. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

  7. HTTP层 —— 请求

    1.访问请求实例 要通过依赖注入获取当前 HTTP 请求实例,需要在控制器的构造函数或方法中对 Illuminate\Http\Request 类进行类型提示,这样当前请求实例会被服务容器自动注入: ...

  8. 【HTML XHTML CSS基础教程(第6版)】笔记之HTML XHTML笔记(1~6章)

      第1章 网页的构造块   1.(X)HTML有三种主要的标记类型:元素,属性,值.   2.浏览器主要通过查看文件的扩展名(.htm或.html)来得知应该按照网页的方式读取文本文件.   3.H ...

  9. C#学习笔记13:静态方法、方法重载和ref、out参数

    静态方法 调用:如果你写的方法和Main()方法在同一个类中,直接写方法名. 如果不在一个类中,需要类名.方法名(); 非静态方法: 调用:创建一个类的对象  对象名.方法名(); Person pe ...

  10. ArrayList、Vector、LinkedList的区别及其优缺点? (转载)

    原文链接:http://blog.csdn.net/wangzff/article/details/7296648 ArrayList,LinkedList,Vestor这三个类都实现了java.ut ...