ASP.NET MVC中常用的ActionResult类型
一、定義
? ? ?MVC中ActionResult是Action的返回結果。ActionResult 有多個派生類,每個子類功能均不同,并不是所有的子類都需要返回視圖View,有些直接返回流,有些返回字符串等。ActionResult是一個抽象類,它定義了唯一的ExecuteResult方法,參數為一個ControllerContext,下面為您介紹MVC中的ActionResult 的用法。
二、什么是ActionResult
? ? ?ActionResult是控制器方法執行后返回的結果類型,控制器方法可以返回一個直接或間接從ActionResult抽象類繼承的類型,如果返回的 是非ActionResult類型,控制器將會將結果轉換為一個ContentResult類型。默認的ControllerActionInvoker 調用ActionResult.ExecuteResult方法生成應答結果。
三、常見的ActionResult
? ? ?1、ViewResult
? ? ?表示一個視圖結果,它根據視圖模板產生應答內容。對應得Controller方法為View。
? ? ?2、PartialViewResult
? ? ?表示一個部分視圖結果,與ViewResult本質上一致,只是部分視圖不支持母版,對應于ASP.NET,ViewResult相當于一個Page,而PartialViewResult 則相當于一個UserControl。它對應得Controller方法的PartialView.
? ? ?3、RedirectResult
? ? ? ?表示一個連接跳轉,相當于ASP.NET中的Response.Redirect方法,對應得Controller方法為Redirect。
? ? ?4、RedirectToRouteResult
? ? ?同樣表示一個跳轉,MVC會根據我們指定的路由名稱或路由信息(RouteValueDictionary)來生成Url地址,然后調用Response.Redirect跳轉。對應的Controller方法為RedirectToAction和RedirectToRoute.
? ? ?5、ContentResult
? ? ?返回簡單的純文本內容,可通過ContentType屬性指定應答文檔類型,通過ContentEncoding屬性指定應答文檔的字符編碼。可通過Controller類中的Content方法便捷地返回ContentResult對象。如果控制器方法返回非ActionResult對象,MVc將簡單地以返回對象的toString()內容為基礎產生一個ContentResult對象。
? ? ?6、EmptyResult
? ? ?返回一個空的結果,如果控制器方法返回一個null ,MVC將其轉換成EmptyResult對象。
? ? ?7、JavaScriptResult
? ? ?本質上是一個文本內容,只是將Response.ContentType設置為application/x-javascript,此結果應該和MicrosoftMvcAjax.js腳本配合使用,客戶端接收到Ajax應答后,將判斷Response.ContentType的值,如果是application/x-javascript,則直接eval 執行返回的應答內容,此結果類型對應得Controller方法為JavaScript.
? ? ?8、JsonResult
? ? ?表示一個Json結果。MVC將Response.ContentType 設置為application/json,并通過JavaScriptSerializer類指定對象序列化為Json表示方式。需要注意,默認情況下,Mvc不允許GET請求返回Json結果,要解除此限制,在生成JsonResult對象時,將其JsonRequestBehavior屬性設置為JsonRequestBehavior.AllowGet,此結果對應Controller方法的Json.
? ? ?9、FileResult(FilePathResult、FileContentResult、FileStreamResult)
? ? ?這三個類繼承于FileResult,表示一個文件內容,三者區別在于,FilePath 通過路徑傳送文件到客戶端,FileContent 通過二進制數據的方式,而FileStream 是通過Stream(流)的方式來傳送。Controller為這三個文件結果類型提供了一個名為File的重載方法。
? ? ?FilePathResult: 直接將一個文件發送給客戶端
? ? ?FileContentResult: 返回byte字節給客戶端(比如圖片)
? ? ?FileStreamResult: 返回流
? ? ?10、HttpUnauthorizedResult
? ? ?表示一個未經授權訪問的錯誤,MVC會向客戶端發送一個401的應答狀態。如果在web.config 中開啟了表單驗證(authenication mode=”Forms”),則401狀態會將Url 轉向指定的loginUrl 鏈接。
? ? ?11、HttpStatusCodeResult
? ? ?返回一個服務器的錯誤信息
? ? ?12、HttpNoFoundResult
? ? ?返回一個找不到Action錯誤信息
四、ActionResult子類之間的關系表
?????
總結
以上是生活随笔為你收集整理的ASP.NET MVC中常用的ActionResult类型的全部內容,希望文章能夠幫你解決所遇到的問題。