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


  操作(action)和操作結果(action result)是 ASP.NET MVC 構建應用程序的一個基礎部分。

  在 ASP.NET MVC 中,控制器用於定義和聚合一組操作。操作是控制器中處理傳入請求的一種方法。控制器提供了一種邏輯方式,將相似的操作組織起來,允許一些通用的規則(例如路由,緩存,授權)使用共同的應用。傳入的請求通過 路由 映射到操作。

  ASP.NET Core MVC 中,控制器可以是任何以 “Controller” 結尾或繼承自以 “Controller” 結尾的可實例化類。控制器應該遵循顯示依賴原則,並通過使用依賴注入的構造函數來獲取其操作需要的依賴項。

  依照慣例,控制器類:

    位於根目錄下的 “Controller” 文件夾中。

    繼承自 Microsoft.AspNetCore.Mvc.Conrroller 

  這兩個慣例不是必需的。

 

  在 MVC 模式中,控制器負責初始化請求和實例化模型。通常來說,業務邏輯應當放在模型中執行。

  模型應該是普通的 CLR 對象,而不是 DbContext 或數據庫相關類型。

  控制器獲取模型處理的結果(如果有的話),返回適當的視圖以及相關聯的視圖數據。

  控制器是一個 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 應用程序中,很多橫切關注點都可以使用過濾器來處理。另外一種選擇時中間件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM