網站首頁 編程語言 正文
操作(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 應用程序中,很多橫切關注點都可以使用過濾器來處理。另外一種選擇時中間件。
原文鏈接:https://www.cnblogs.com/afei-24/p/11330710.html
相關推薦
- 2024-03-13 QAobject修改excel字體亂碼問題
- 2023-02-01 MongoDB?事務支持詳解_MongoDB
- 2022-09-03 Docker進階之構建自定義鏡像實戰指南_docker
- 2022-10-11 兩臺主機的vmware虛擬機相互連通的實現步驟_VMware
- 2022-07-12 git同步fork倉庫同步upstream倉庫
- 2022-10-21 Go錯誤和異常CGO?fallthrough處理教程詳解_Golang
- 2021-11-16 使用Flutter定位包獲取地理位置_Android
- 2022-04-10 MyBatis 查詢的時候屬性名和字段名不一致的問題
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支