MVC中的擴充套件點 六 ActionResult

2021-08-15 08:48:44 字數 2124 閱讀 9118

actionresult是控制器方法執行後返回的結果型別,控制器方法可以返回乙個直接或間接從actionresult抽象類繼承的型別,如果返回的是非actionresult型別,控制器將會將結果轉換為乙個contentresult型別。預設的controlleractioninvoker呼叫actionresult.executeresult方法生成應答結果。

mvc中實現的預設actionresult如下:

1、contentresult:返回簡單的純文字內容,可通過contenttype屬性指定應答文件型別,通過contentencoding屬性指定應答文件的字元編碼。可通過controller類中的content方法便捷地返回contentresult物件。如果控制器方法返回非actionresult物件,mvc將簡單地以返回物件的tostring()內容為基礎產生乙個contentresult物件。

2、emptyresult: 返回乙個空的結果。如果控制器方法返回乙個null,mvc將其轉換成emptyresult物件。

3、redirectresult:表示乙個連線跳轉,相當於asp.net中的response.redirect方法。對應的controller方法為redirect。

4、redirecttorouteresult:同樣表示乙個調轉,mvc會根據我們指定的路由名稱或路由資訊(routevaluedictionary)來生成url位址,然後呼叫response.redirect跳轉。對應的controller方法為redirecttoaction和redirecttoroute。

5、viewresult: 表示乙個檢視結果,它根據檢視模板產生應答內容。對應controller方法為view。

6、partialviewresult:表示乙個部分檢視結果,與viewresult本質上一致,只是部分檢視不支援母版,對應於asp.net,viewresult相當於乙個page,而partialviewresult則相當於乙個usercontrol。它對應的controller方法為partialview。

7、httpunauthorizedresult:表示乙個未經授權訪問的錯誤。mvc會向客戶端傳送乙個401的應答狀態。如果在web.config中開啟了表單驗證(authentication mode=」forms」),則401狀態會將url轉向指定的loginurl鏈結。

10、filepathresult、filecontentresult、filestreamresult:

這三個類繼承於fileresult,表示乙個檔案內容,三者的區別在於,filepath通過路徑傳送檔案到客戶端,filecontent通過二進位制資料的方式,而filestream是通過stream的方式來傳送。controller為這三個檔案結果型別提供了乙個名為file的過載方法。

通過直接或間接地從actionresult繼承,可實現自定義的結果型別,下例將實現乙個xmlresult型別,用於返回xml應答內容:

1、建立乙個空的mvc專案

2、實現xmlresult

xmlresult

public

class xmlresult : actionresult

public object data

public

override

void

executeresult(controllercontext context)

using (memorystream ms = new memorystream())}}

}

3、建立乙個homecontroller,實現index方法

public actionresult index()

);}

mvc中Action前HttpPost的作用

一 action前httppost例項 指令碼呼叫 function post test function data 或者 ajax 二 action前httppost 的作用 限制action只接受httppost的請求,對於httpget的請求則提示404找不到頁面。如果action前即沒有 h...

MVC中的擴充套件點 一 路由上的擴充套件

原文出處 一 routebase 前面我們知道,urlroutingmodule通過遍歷routetable.routes中的路由物件來獲取匹配的routedata,從而將請求 到相應的ihttphandler處理程式。routetable.routes是乙個routebase物件集合,可向集合中新...

Action類的擴充套件

1 modeldriven介面 將請求引數看做模型即物件,並返回給action類 2 action介面 提供execute 方法,以及常量如 success,error 3 actionsupport類 它是乙個工具類,它已經實現了action介面和validateable介面,提供可資料校驗功能。...