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。下面是乙...