我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如

  1. public ActionResult Index()
  2. {
  3. return View();
  4. }

除了View()之外那我们这里还能用于返回什么值呢?

一、ascx页面

场景:要返回代码片断,比如Ajax返回一个子页

我们先新建一个Action

  1. public ActionResult Ascx()
  2. {
  3. return PartialView();
  4. }

我们下面再建一个View,仍然是在Action中点右键,AddView。

注意图中勾选。

于是新建了一个ascx页,我们将之少做改写一下

  1. <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
  2.  
  3. <div>
  4. 得到一个DIV
  5. </div>

运行,得到页面

二、返回文本

除了上述情况,有时我们还会仅返回一段文本。

此时我们可以使用以下Action形式:

  1. public ActionResult Text(){
  2. return Content("这是一段文本");
  3. }

三、返回Json

有时我们在调用Ajax时还会要求返回对象为Json序列化的结果,如:

  1. public ActionResult ShowJson()
  2. {
  3. var m = new EiceIndexModel
  4. {
  5. Name = "邹健",
  6. Sex = true
  7. };
  8. return Json(m);
  9. }

返回文本:

  1. {"Name":"邹健","Sex":true}

四、输出JS文件

大多时候js文件都是静态的,但有时js文件可能也要动态生成这时我们可以这样输出

  1. public ActionResult Js()
  2. {
  3. return JavaScript("var x=0;");
  4. }

我们访问之,得到一个正常页面但其Content-Type:application/x-javascript; charset=utf-8

五、页面跳转

1.跳转到Url

  1. public ActionResult rdurl()
  2. {
  3. return Redirect("http://www.baidu.com");
  4. }

2.跳转到Action

  1. public ActionResult rdaction()
  2. {
  3. return RedirectToAction("Index","Eice");
  4. }

3.跳转到Routing规则

  1. public ActionResult rdrouting()
  2. {
  3. return RedirectToRoute("Default",//Route名
  4. new{
  5. Controller = "Eice",
  6. Action = "Index"
  7. });
  8. }

六、显示文件

  1. public ActionResult fn()
  2. {
  3. return File(
  4. "/Content/site.css"//文件路径
  5. , "text/css"//文件类型
  6. );
  7. }
  8.  

本文转自:http://blog.csdn.net/pasic/article/details/7110134

Asp.net MVC中Controller返回值类型
在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求:

  • 必须是一个public方法
  • 必须是实例方法
  • 没有标志NonActionAttribute特性的(NoAction)
  • 不能被重载
  • 必须返回ActionResult类型

如:

  1. publicclass MyController : Controller
  2. {
  3. // 必须返回ActionResult类型
  4. public ActionResult HelloWorld()
  5. {
  6. ViewData["Message"] = "Hello World!";
  7. return View();
  8. }
  9. }
  1. public class MyController : Controller
  2. {
  3. // 必须返回ActionResult类型
  4. public ActionResult HelloWorld()
  5. {
  6. ViewData["Message"] = "Hello World!";
  7. return View();
  8. }
  9. }

下面列举Asp.net MVC中Controller中的ActionResult返回类型 1、返回ViewResult视图结果,将视图呈现给网页

  1. public ActionResult About()
  2. {
  3. return View(); // 参数可以返回model对象
  4. }
  1. public ActionResult About()
  2. {
  3. return View(); // 参数可以返回model对象
  4. }

2、 返回PartialViewResult部分视图结果,主要用于返回部分视图内容在View/Shared目录下创建ViewUserControl.cshtml部分视图

  1. public ActionResult UserControl()
  2. {
  3. ViewBag.Message = "部分视图";
  4. return PartialView("ViewUserControl");
  5. }
  1. public ActionResult UserControl()
  2. {
  3. ViewBag.Message = "部分视图";
  4. return PartialView("ViewUserControl");
  5. }

页面调用@ViewBag.Message 将输出“部分视图” 3、 返回ContentResult用户定义的内容类型

  1. public ActionResult Content()
  2. {
  3. return Content("Test Content", "text/html"); // 可以指定文本类型
  4. }
  1. public ActionResult Content()
  2. {
  3. return Content("Test Content", "text/html"); // 可以指定文本类型
  4. }

页面输出“Test Content”;此类型多用于在ajax操作中需要返回的文本内容 4、 返回JsonResult序列化的Json对象

  1. public ActionResult Json()
  2. {
  3. Dictionary<string, object> dic = new Dictionary<string, object>();
  4. dic.Add("id", 100);
  5. dic.Add("name", "hello");
  6. return Json(dic, JsonRequestBehavior.AllowGet);
  7. }
  1. public ActionResult Json()
  2. {
  3. Dictionary<string, object> dic = new Dictionary<string, object>();
  4. dic.Add("id", 100);
  5. dic.Add("name", "hello");
  6. return Json(dic, JsonRequestBehavior.AllowGet);
  7. }

主要用于返回json格式对象,可以用ajax操作;注意:需要设置参数,JsonRequestBehavior.AllowGet,否则会提示错误:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。 5、返回JavaScriptResult可在客户端执行的脚本

  1. public ActionResult JavaScript()
  2. {
  3. string str = string.Format("alter('{0}');", "弹出窗口");
  4. return JavaScript(str);
  5. }
  1. public ActionResult JavaScript()
  2. {
  3. string str = string.Format("alter('{0}');", "弹出窗口");
  4. return JavaScript(str);
  5. }

但这里并不会直接响应弹出窗口,需要用页面进行再一次调用。这个可以方便根据不同逻辑执行不同的js操作 6、返回FileResult要写入响应中的二进制输出,一般可以用作要简单下载的功能

  1. public ActionResult File()
  2. {
  3. string fileName = "~/Content/test.zip"; // 文件名
  4. string downFileName = "文件显示名称.zip"; // 要在下载框显示的文件名
  5. return File(fileName, "application/octet-stream", downFileName);
  6. }
  1. public ActionResult File()
  2. {
  3. string fileName = "~/Content/test.zip"; // 文件名
  4. string downFileName = "文件显示名称.zip"; // 要在下载框显示的文件名
  5. return File(fileName, "application/octet-stream", downFileName);
  6. }

直接下载test.zip后保存到本地则为"文件显示名称.zip" 7、 返回Null或者Void数据类型的EmptyResult

  1. public ActionResult Empty()
  2. {
  3. returnnull;
  4. }
  1. public ActionResult Empty()
  2. {
  3. return null;
  4. }

返回NULL 8、重定向方法:Redirect / RedirectToAction / RedirectToRoute
    Redirect:直接转到指定的url地址

  1. public ActionResult Redirect()
  2. {
  3. // 直接返回指定的url地址
  4. return Redirect("http://www.baidu.com");
  5. }
  1. public ActionResult Redirect()
  2. {
  3. // 直接返回指定的url地址
  4. return Redirect("http://www.baidu.com");
  5. }

RedirectToAction:直接使用 Action Name 进行跳转,也可以加上ControllerName

  1. public ActionResult RedirectResult()
  2. {
  3. return RedirectToAction("Index", "Home", new { id = "100", name = "liu" });
  4. }
  1. public ActionResult RedirectResult()
  2. {
  3. return RedirectToAction("Index", "Home", new { id = "100", name = "liu" });
  4. }

也可以带上参数RedirectToRoute:指定路由进行跳转

  1. public ActionResult RedirectRouteResult()
  2. {
  3. return RedirectToRoute("Default", new { controller = "Home", action = "Index"});
  4. }
  1. public ActionResult RedirectRouteResult()
  2. {
  3. return RedirectToRoute("Default", new { controller = "Home", action = "Index"});
  4. }

Default为global.asax.cs中定义的路由名称

ActionResult的其它返回值的更多相关文章

  1. ASP.NET MVC 第五回 ActionResult的其它返回值

    我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Inde ...

  2. ASP.NET MVC ActionResult的其它返回值

    一.ascx页面 场景:要返回代码片断,比如Ajax返回一个子页 我们先新建一个Action public ActionResult Ascx() { return PartialView(); } ...

  3. EF5+MVC4系列(8) ActionResult的返回值

    我们在MVC的代码中,经常会看到这样的一个 代码 可能有人会有疑问,既然我定义的是ActionResult,为什么返回值会是View方法呢? 其实这个View方法的返回值的类型是ActionResul ...

  4. Asp.net mvc中Controller的返回值

    (1)EmptyResult:当用户有误操作或者是图片防盗链的时候,这个EmptyResult就可以派上用场,返回它可以让用户啥也看不到内容,通过访问浏览器端的源代码,发现是一个空内容: public ...

  5. ASP.NET Core中的Action的返回值类型

    在Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类.并且Core把MVC跟WebApi合并之后 ...

  6. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

  7. 列举mvc ActionResult的返回值

    8.列举ASP.NET MVC ActionResult的返回值有几种类型? 主要有View(视图).PartialView(部分视图).Content(内容).Json(Json字符串).Javas ...

  8. ASP.NET MVC中Controller返回值类型ActionResult

    1.返回ViewResult视图结果,将视图呈现给网页 public class TestController : Controller { //必须存在Controller\Test\Index.c ...

  9. Controller返回值类型ActionResult

    在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonA ...

随机推荐

  1. C# Monads的实现(一)

    了解Haskell语言的朋友都知道它是一门纯函数式编程,输出结果只跟输入参数相关,这导致Haskell不能有输入输出函数,因为不同的环境下,输入相同,但输出可能有所不同.Haskell语言中,变量的值 ...

  2. Java常用集合类(1)

    一.HashMap 参考文章: http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E ...

  3. 防暴力破解 Fail2Ban之python

    fai2ban的介绍 fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要 ...

  4. 高精度运算专题1-加法运算(The addition operation)

    这个专题呢,我就来讲讲高精度的加法,下面是一个计算加法的函数(用数组a加上数组b结果存到数组c里面). 思路:先测一下数组a和数组b的长度,分别放到a[0].b[0]里面去,再从第二位开始相加,记得满 ...

  5. Openjudge-计算概论(A)-求平均年龄

    描述: 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位. 输入第一行有一个整数n(1<= n <= 100),表示学生的人数.其后n行每行有1个 ...

  6. photoshop的页面制作练习1

  7. Set下面HashSet,TreeSet和LinkedHashSet的区别

    Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个对象用eq ...

  8. Yii2.0的安装与配置教程

    版权声明:本文为博主原创文章,未经博主允许不得转载. PHP版本需求:PHP5.4.0以上,因为Yii2.0基于PHP5.4以上版本进行了完全重写. 目前有两种方法可以安装Yii2.0,一种是安装Co ...

  9. C语言_基础代码_01

    #include<stdio.h> #include<stdlib.h> #define BUFFERSIZE 1024/*允许处理的最长行有1024个字符*/ /*编译环境v ...

  10. 第三十九节,python内置全局变量

    vars()查看内置全局变量 以字典方式返回内置全局变量 #!/usr/bin/env python # -*- coding:utf8 -*- print(vars()) #输出 # {'__bui ...