操做(action)和操做結果(action result)是 ASP.NET MVC 構建應用程序的一個基礎部分。html
在 ASP.NET MVC 中,控制器用於定義和聚合一組操做。操做是控制器中處理傳入請求的一種方法。控制器提供了一種邏輯方式,將類似的操做組織起來,容許一些通用的規則(例如路由,緩存,受權)使用共同的應用。傳入的請求經過 路由 映射到操做。數據庫
ASP.NET Core MVC 中,控制器能夠是任何以 「Controller」 結尾或繼承自以 「Controller」 結尾的可實例化類。控制器應該遵循顯示依賴原則,並經過使用依賴注入的構造函數來獲取其操做須要的依賴項。緩存
依照慣例,控制器類:函數
位於根目錄下的 「Controller」 文件夾中。spa
繼承自 Microsoft.AspNetCore.Mvc.Conrroller htm
這兩個慣例不是必需的。中間件
在 MVC 模式中,控制器負責初始化請求和實例化模型。一般來講,業務邏輯應當放在模型中執行。對象
模型應該是普通的 CLR 對象,而不是 DbContext 或數據庫相關類型。blog
控制器獲取模型處理的結果(若是有的話),返回適當的視圖以及相關聯的視圖數據。繼承
控制器是一個 UI 級抽象。它的職責是確保傳入的請求數據有效,並選擇應返回哪一個視圖(或 API 的結果)。通常在控制器中不會直接包含數據訪問或業務邏輯,而是委託服務來處理這些任務。
1.定義操做(Action)
控制器上的任何公共方法都是操做。操做上的參數使用模型綁定請求數據並驗證。
接受參數的操做方法應驗證 ModelState.IsValid 屬性爲 true。
操做方法應包含將傳入請求映射到業務關注的邏輯。業務關注一般表示爲控制器經過依賴注入訪問的服務。而後,操做將業務操做的結果映射到應用程序狀態。
操做能夠返回任何內容,但一般返回產生響應的 IActionResult 的實例。操做方法負責選擇什麼樣的響應,操做結果負責響應。
2.控制器輔助方法
雖然不是必需的,通常從 Controller 基類繼承本身的控制器。從而獲得能訪問不少屬性和有用方法的控制器。
3.視圖 View
返回使用墨香呈現 HTML 的視圖,如, return View(model);
4.HTTP 狀態代碼
返回 HTTP 狀態代碼,如,renturn BadRequest();
5.格式化響應
返回 JSON 或相似的以特定方式格式化對象。如, return Json(model);
6.內容協商響應
操做能夠返回內容協商響應(使用 OK ,Created , CreateAtRoute 或 CreateAtAction),而不是直接返回對象。
7.重定向
返回到另外一個操做或目標的重定向(使用 Redirect,LocalRedirect,RedirectToAction 或 RedirectToRoute).
除了上述方法,一個操做也能夠簡單的返回一個對象。在這種狀況下,對象將根據客戶端的請求進行格式化。
在大多數應用中,許多操做會共用部分工做流。例如,大多數應用程序可能只經過驗證的用戶,或者要利用緩存。當但願在操做方法運行以前或以後執行某些邏輯時,可使用過濾器。能夠經過過濾器來處理這些橫切關注點,從而避免操做變得臃腫。
在受權和身份驗證的狀況下,能夠將 「Authorize」 特性應用於須要它的任何操做或控制器上。
在 MVC 應用程序中,不少橫切關注點均可以使用過濾器來處理。另一種選擇時中間件。