MVC教程五:Action方法的返回類型


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 System.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);
        }

        /// <summary>
        /// 3、返回JavaScript
        /// </summary>
        /// <returns></returns>
        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類型的對象,如上表所示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM