MVC中Action方法的返回类型介绍

2022-04-17 10:26:42

MVC中的Action方法的返回值一般有以下几种:

类型

s说明

EmptyResult

不进行任何操作

ContentResult

将指定内容作为文本输出

jsonResult

输出JSON字符串

javascriptResult

输出javaScript

RedirecResult、RedirectToRouteResult

重定向到给定的URL中

FileResult(抽象类)

FilePathResult、FileContentResult、FileStreamResult

文件输出

ViewResultBase(抽象类)

ViewResult、PartialViewResult

调用视图输出

Controller控制器代码如下:

using System;using System.Collections.Generic;using System.Linq;using SysteoAMStTAQVm.Web;using System.Web.Mvc;using System.IO;namespace MvcActionReturnType.Controllers{    public class HomeController : Controller    {        /// <summary>        /// 1、返回一个ViewResult对象        /// </summary>        /// <returns></returns>        public ActionResult Index()        {            return View();        }        /// <summary>        /// 2、返回一个json格式的数据        /// </summary>        /// <returns></returns>        public ActionResult Json()        {            var book = new { BookId = 1, BookName = "MVC框架" };            return Json(book, JsonRequestBehavior.AllowGet);        }        /// <summoAMStTAQVary>        /// 3、返回JavaScript        /// </summary>        /// <returns></rewww.easck.comturns>        public ActionResult JavaScript()        {            string js = "<script>alert('Welcome to ASP.NET MVC')</script>";            return JavaScript(js);        }        /// <summary>        /// 4、返回FilePath        /// </summary>        /// <returns></returns>        public ActionResult FilePath()        {            //return File("~/Content/校长 - 带你去旅行.mp3", "audio/mp3");            return new FilePathResult("~/Content/校长 - 带你去旅行.mp3", "audio/mp3");        }        /// <summary>        /// 5、返回FileContent        /// </summary>        /// <returns></returns>        public ActionResult FileContent()        {            string content = "Welcome To ASP.NET MVC";            byte[] contents = System.Text.Encoding.UTF8.GetBytes(content);            return File(contents, "text/plain");        }        /// <summary>        /// 6、返回FileStream        /// </summary>        /// <returns></returns>        public ActionResult FileStream()        {            string content = "Welcome To ASP.NET MVC";            byte[] contents = System.Text.Encoding.UTF8.GetBytes(content);            FileStream fs = new FileStream(Server.MapPath("~/Content/2 开发环境下载安装说明.doc"), FileMode.Open);            return File(fs, "application/msword");        }        /// <summary>        /// 7、返回 ContentResult        /// </summary>        /// <returns></returns>        public ActionResult ContentResult()        {            string content = "<h1>Welcome To ASP.NET MVC</h1>";            return Content(content);        }        public ActionResult About()        {            ViewBag.Message = "Your application description page.";            return View();        }        public ActionResult Contact()        {            ViewBag.Message = "Your contact page.";            return View();        }    }}

视图代码如下:

@{    ViewBag.Title = "Home Page";}<div>    1.输出json    <p>        @Html.ActionLink("生成Json", "Json");    </p>    2.输出js    <script src=@Url.RouteUrl(new { action="JavaScript"}) type="text/javascript">    </script>    <p>        @(Url.RouteUrl(new { controller = "home", action = "JavaScript" }));        @Html.ActionLink("生成JavaScript", "JavaScript");    </p>    3.播放音乐    <p>        @Html.ActionLink("播放MP3", "FilePath");    </p>    4.查看文本文件    <p>        @Html.ActionLink("查看文件内容", "FileContent");    </p>    5.链接文件流    <p>        @Html.ActionLink("访问Doc", "FileStream");    </p>    6.输出文本    <p>        @Html.ActionLink("输出文本", "ContentResult");    </p></div>

 请看下面的两段代码:

public int Sum(int num1, int num2){       int sum = num1 + num2;       return sum;}public ActionResult Sum2(int num1, int num2){       int sum = num1 + num2;       return Content(sum.ToString());}

有些时候,我们希望把Action定义成一种更自然的形式,比如我们希望Action Sum2做一个求和的计算,传入的参数是整数,计算的结果也是整数,那么可不可以返回一个整数的结果呢?

如上面的两个方法所示,两个方法的效果是等价的,也就是会把整形的数据转换成字符串类型,然后封装成ContentResult类型,这个过程是MVC框架自动帮助我们完成的。

返回的值

说明

null

EmptyResult

void

EmptyResult

对象(ActionResult之外的类型)

ContentResult

在Action方法中,任何类型的返回值都是可以的,如果他不是ActionResult类型,会封装成ActionResult类型的对象,如上表所示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。