一、概述
ActionResult是控制器方法執行后返回的結果類型。ActionResult 有多個派生類,每個子類功能均不同,並不是所有的子類都需要返回視圖View,有些直接返回流,有些返回字符串等。ActionResult是一個抽象類,它定義了唯一的ExecuteResult方法,參數為一個ControllerContext,下面是MVC中的ActionResult派生類的關系圖
二、常見的幾種ActionResult
1、ContentResult
返回簡單的純文本內容,可通過ContentType屬性指定應答文檔類型,通過ContentEncoding屬性指定應答文檔的字符編碼。可通過Controller類中的Content方法便捷地返回ContentResult對象。
2、EmptyResult
返回一個空的結果。如果控制器方法返回一個null,MVC將其轉換成EmptyResult對象。
3、RedirectResult
表示一個連接跳轉,相當於ASP.NET中的Response.Redirect方法。對應的Controller方法為Redirect。
4、ViewResult
表示一個視圖結果,它根據視圖模板產生應答內容。對應Controller方法為View。
5、JavaScriptResult
本質上是一個文本內容,只是將Response.ContentType設置為 application/x-javascript,此結果應該和MicrosoftMvcAjax.js腳本配合使用,客戶端接收到Ajax應答后,將判斷Response.ContentType的值,如果是application/x-javascript,則直接eval執行返回的應答內容。此結果類型對應的Controller方法為JavaScript。
6、JsonResult
表示一個JSON結果。MVC將Response.ContentType設置為application/json,並通過JavaScriptSerializer類將指定對象序列化為Json表示方式。需要注意,默認情況下,MVC不允許GET請求返回JSON結果,要解除此限制,在生成JsonResult對象時,將其JsonRequestBehavior屬性設置為JsonRequestBehavior.AllowGet。此結果對應的Controller方法為Json。