控制器和動作方法之Action動作方法

2021-10-06 09:50:47 字數 3646 閱讀 7012

1.產生輸出

控制器在完成了乙個請求的處理後,通常需要生成乙個響應。

如:如果想傳送乙個html響應,必須參加並裝配html資料,並用reponse.write方法傳送到客戶端。

2.理解動作結果

mvc框架使用動作結果(action result)把指明意圖和執行意圖分離開來。

在動作方法被執行後,建立mvc框架處理的actionresult物件以產生結果。

action動作方法返回乙個派生於actionresult類的物件,它描述控制器響應要完成的功能。例如;渲染乙個檢視、重定向到另乙個url或動作方法等等。但是這是間接發生的,不直接產生響應。

mvc框架含有許多內建的動作方法結果型別,所有型別都是派生於actionresult,其中不少型別在controller類中有便利的輔助器方法:

通過渲染檢視返回html:

動作方法最常用的一種響應形式是生成html,並將其傳送給瀏覽器。

public

actionresult

index

(int num=0)

controller類中,提供了一些過載的view()方法返回viewresult物件,用來渲染檢視返回html,傳送給客戶端:幾個比較常用的方法:

view () -->渲染和當前action動作方法名稱相同的view檢視

view (object model)---->渲染和當前action動作方法名稱相同的view檢視,並且傳遞model檢視模型物件

view (string viewname) ------>渲染指定名稱的view檢視(只能位於同乙個controller下action對應的view檢視)

view (string viewname, object model)-------->渲染指定名稱的view檢視(只能位於同乙個controller下action對應的view檢視),並且傳遞model檢視模型物件

檢視查詢過程:

當動作方法返回viewresult物件,mvc接收到該物件,會在當前專案的views目錄下, 根據檢視名稱去查詢,如果存在區域(areas),會去/areas/view/目錄下去找

如果不存在區域(area),則會去以當前控制器(去掉controller)為名的views下的子資料夾去查詢,如果找到了就停止搜素,使用找到的檢視響應渲染給客戶端

通過路徑指定檢視:

demo:

using system;

using system.collections.generic;

using system.linq;

using system.web;

using system.web.mvc;

namespace mvc_project05.controllers

}}

如果要渲染屬於另乙個控制器的檢視,那麼把使用者重定向到那個控制器的乙個動作方法也許會更好一些。

將資料從動作方法傳遞給檢視,請看之前寫的文章:

view檢視之在action動作方法中傳遞引數給檢視

執行重定向:

有一種動作方法的通常結果並不是直接產生輸出,而是把使用者的瀏覽器重定向到另乙個url。大多數情況下,這個url是應用程式的另乙個動作方法,它生成你希望使用者看到的輸出。

1.重定向到字面url:

對瀏覽器進行重定向的最基本的方法是呼叫redirect方法,它返回redirectresult類的乙個物件,

demo:

/// 

/// 實現重定向

///

///

public

actionresult

redirect()

重定向到路由系統的url:

public

redirecttorouteresult

routeredirect());}

redirecttoroute()方法有幾個過載的方法:

我們使用的是這個方法:接收乙個object類的引數物件

redirecttoroute(object routevalues)

我們在這裡傳遞乙個匿名物件,其屬性被傳遞給路由系統,

如果在路由系統中匹配上了指定url模式的路由,則生成乙個url

重定向到乙個動作方法:可以使用redirecttoaction和redirecttoactionpermanent方法(也是一些過載方法),可以更優雅的實現重定向到乙個動作方法

demo:

/// 

///

/// redirecttoaction(string actionname)

/// redirecttoaction(string actionname, string controllername)

///

///

///

public

actionresult

actionredirect()

返回錯誤和http**:內建的actionresult類可以用來給客戶端傳送指定的錯誤資訊和http結果碼:

/// 

/// 傳送特定的http結果碼

注意:action動作方法不僅僅可以去執行諸如以上的操作,

在ajax請求處理中,呼叫指定controller下的action動作方法,其動作方法返回值型別可以為string或者jsonresult型別,將資料響應給客戶端

控制器和動作方法之控制器Controller

到達應用程式的每乙個請求都是由控制器處理的。只要不偏離到屬於模型和檢視職責的領域,控制器可以以它認為合適的方式自由地處理請求。在asp.net mvc框架中,控制器是含有請求處理邏輯的.net類。控制器的作用是 1.負責處理輸入請求 2.執行域模型上的操作 3.選擇渲染給使用者的檢視 建立乙個控制器...

5 控制器和Action方法

控制器和action方法 原文 1.介紹 控制器的職責 定位並執行action方法,並確保它能正確執行 獲取action方法所需的引數並傳遞給它 捕獲action方法執行期間出現的錯誤 提供 webformviewfactory 類以便生成asp.net頁面型別的檢視。乙個簡單的示例 mvc框架預設...

5 控制器和Action方法

routedata例項的 引數傳給action方法。當引數值無法解析時,若引數時引用或nullable型別,則傳遞null給它,否則則丟擲異常。為了直接訪問url中的資料,控制器提供了request和response類,他們的語義對應於 httprequest 和 httpresponse。下面是乙...