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

2021-10-06 09:44:36 字數 3686 閱讀 5603

到達應用程式的每乙個請求都是由控制器處理的。只要不偏離到屬於模型和檢視職責的領域,控制器可以以它認為合適的方式自由地處理請求。

在asp.net mvc框架中,控制器是含有請求處理邏輯的.net類。控制器的作用是

1.負責處理輸入請求

2.執行域模型上的操作

3.選擇渲染給使用者的檢視

建立乙個控制器,需要實現icontroller介面或繼承controller類1.使用icontroller建立控制器在controller資料夾下,新增乙個類檔案:basiccontroller.cs

result:跳轉到的頁面:

icontroller介面,是乙個很簡單的介面,唯一的方法execute,在請求以控制器類為目標被呼叫。

icontroller介面

execute ()方法接收的是乙個system.web.routing.requestcontext requestcontext物件,該物件它提供關於當前請求與匹配路由的資訊(導致控制器被呼叫處理請求)。

httpcontext屬性     返回乙個描述當前請求的httpcontextbase物件

routedata屬性 返回乙個描述匹配請求路由的routedata物件

routedata物件描述了路由,有幾個比較重要的屬性:

route      返回匹配路由的routebase實現

values 返回按命名索引的片段值的集合

總結1:實現icontroller介面所建立的類,mvc框架會將其視為是乙個控制器,並將請求傳送給它,而且在處理請求和響應請求上沒有任何限制。2.建立派生於controller的控制器使用controller類,用來支援對請求處理提供支援的類。

controller類提供以下三個關鍵特性:

1動作方法(action method):乙個控制器的行為被分解成多個方法

(而不是只有乙個單一的)。每個動作方法被暴露給不同的url,並通過從輸入請求提取的引數進行呼叫。

2.動作結果(action result):可以返回乙個描述動作結果的物件(例如:1.渲染檢視 2.重定向到乙個不同的url或動作方法)

除非你有乙個非常明確的需求,建立控制器的最好方法就是通過controller類進行派生,controllers資料夾–>新增(右擊)---->控制器

demo:

using system;

using system.collections.generic;

using system.linq;

using system.web;

using system.web.mvc;

using mvc_project05.models;

namespace mvc_project05.controllers

}}

在views檔案下的子資料夾derived下,新增myview視**件:

總結2:

作為controller類的乙個派生類,所要做的工作就是實現動作方法、獲取所需要的各種輸入,以對請求進行處理,並生成乙個適當的響應。

3.接收請求引數

控制器經常需要訪問來自於輸入請求的資料,如查詢字串、表單值、以及路由引數,訪問這些資料有三個主要的途徑:

1.通過一組上下文物件進行提取

2.作為引數(parameters)被傳遞給動作方法而形成的資料

3.明確地呼叫框架的模型繫結

具體的用法,請看下面之前寫的兩篇文章:

mvc中幾種常用傳參方式以及在後台中獲取客戶端請求引數值

asp.net 幾種常用的頁面傳值的方式

理解引數物件例項化:

controller基類使用叫做"值提供器"和"模型繫結器"的mvc框架元件來獲取動作方法的引數。有一組內建的值提供器,會抓取request.form、request.querystring、request.files以及routedata.values的資料項。

預設的模型繫結器能夠建立並填充任何.net型別的物件,包括集合和專案專用的自定義型別。

理解可選引數和強制引數:

如果mvc框架找不到引用型別引數(如string或object)的值,動作方法仍然會被呼叫,但對引數會賦null值。若找不到值型別(如int或double)的值,則會丟擲異常且不會被呼叫。

1.值型別引數是強制的,呼叫action動作方法時,必須傳入,為了使其成為可選,可以給引數指定乙個預設值

demo:

public

actionresult

index

(int num=0)

2.引用型別引數是可選的,為了使它們成為必需的(以保證傳遞乙個非空值),比如;可以丟擲乙個argumentnullexception

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

1.產生輸出 控制器在完成了乙個請求的處理後,通常需要生成乙個響應。如 如果想傳送乙個html響應,必須參加並裝配html資料,並用reponse.write方法傳送到客戶端。2.理解動作結果 mvc框架使用動作結果 action result 把指明意圖和執行意圖分離開來。在動作方法被執行後,建立...

子控制器 和 父控制器

1 新增子控制器很簡單 分兩步 乙個是 view 乙個是 controller 1 self addchildviewcontroller tablectr 2 self.view addsubview tablectr.view 最後不要忘了加一行 tablectr didmovetoparent...

jmeter控制器 交替控制器

1.簡單使用 如下圖,設定1個執行緒,執行3次 執行結果如下圖 2.巢狀乙個控制器,不勾選忽略子控制器 測試計畫如下圖 巢狀乙個迴圈控制器,迴圈次數設定3次 執行緒組設定1個執行緒,執行5次 執行結果如下圖 總結 交替執行到迴圈控制器時,迴圈執行結束後,在進行下一次的交替。3.巢狀乙個控制器,勾選忽...