ASP.NET Core MVC 之控制器(Controller)

  操做(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 應用程序中,不少橫切關注點均可以使用過濾器來處理。另一種選擇時中間件。

相關文章
相關標籤/搜索