ASP.NET Core MVC中的控制器(Controller)介紹
操作(action)和操作結(jié)果(action result)是 ASP.NET MVC 構建應用程序的一個基礎部分。
在 ASP.NET MVC 中,控制器用于定義和聚合一組操作。操作是控制器中處理傳入請求的一種方法??刂破魈峁┝艘环N邏輯方式,將相似的操作組織起來,允許一些通用的規(guī)則(例如路由,緩存,授權)使用共同的應用。傳入的請求通過 路由 映射到操作。
ASP.NET Core MVC 中,控制器可以是任何以 “Controller” 結(jié)尾或繼承自以 “Controller” 結(jié)尾的可實例化類??刂破鲬撟裱@示依賴原則,并通過使用依賴注入的構造函數(shù)來獲取其操作需要的依賴項。
依照慣例,控制器類:
- 位于根目錄下的 “Controller” 文件夾中。
- 繼承自 Microsoft.AspNetCore.Mvc.Conrroller
這兩個慣例不是必需的。
在 MVC 模式中,控制器負責初始化請求和實例化模型。通常來說,業(yè)務邏輯應當放在模型中執(zhí)行。
模型應該是普通的 CLR 對象,而不是 DbContext 或數(shù)據(jù)庫相關類型。
控制器獲取模型處理的結(jié)果(如果有的話),返回適當?shù)囊晥D以及相關聯(lián)的視圖數(shù)據(jù)。
控制器是一個 UI 級抽象。它的職責是確保傳入的請求數(shù)據(jù)有效,并選擇應返回哪個視圖(或 API 的結(jié)果)。一般在控制器中不會直接包含數(shù)據(jù)訪問或業(yè)務邏輯,而是委托服務來處理這些任務。
1.定義操作(Action)
控制器上的任何公共方法都是操作。操作上的參數(shù)使用模型綁定請求數(shù)據(jù)并驗證。
接受參數(shù)的操作方法應驗證 ModelState.IsValid 屬性為 true。
操作方法應包含將傳入請求映射到業(yè)務關注的邏輯。業(yè)務關注通常表示為控制器通過依賴注入訪問的服務。然后,操作將業(yè)務操作的結(jié)果映射到應用程序狀態(tài)。
操作可以返回任何內(nèi)容,但通常返回產(chǎn)生響應的 IActionResult 的實例。操作方法負責選擇什么樣的響應,操作結(jié)果負責響應。
2.控制器輔助方法
雖然不是必需的,一般從 Controller 基類繼承自己的控制器。從而得到能訪問很多屬性和有用方法的控制器。
3.視圖 View
返回使用墨香呈現(xiàn) HTML 的視圖,如, return View(model);
4.HTTP 狀態(tài)代碼
返回 HTTP 狀態(tài)代碼,如,renturn BadRequest();
5.格式化響應
返回 JSON 或類似的以特定方式格式化對象。如, return Json(model);
6.內(nèi)容協(xié)商響應
操作可以返回內(nèi)容協(xié)商響應(使用 OK ,Created , CreateAtRoute 或 CreateAtAction),而不是直接返回對象。
7.重定向
返回到另一個操作或目標的重定向(使用 Redirect,LocalRedirect,RedirectToAction 或 RedirectToRoute).
除了上述方法,一個操作也可以簡單的返回一個對象。在這種情況下,對象將根據(jù)客戶端的請求進行格式化。
在大多數(shù)應用中,許多操作會共用部分工作流。例如,大多數(shù)應用程序可能只通過驗證的用戶,或者要利用緩存。當希望在操作方法運行之前或之后執(zhí)行某些邏輯時,可以使用過濾器??梢酝ㄟ^過濾器來處理這些橫切關注點,從而避免操作變得臃腫。
在授權和身份驗證的情況下,可以將 “Authorize” 特性應用于需要它的任何操作或控制器上。
在 MVC 應用程序中,很多橫切關注點都可以使用過濾器來處理。另外一種選擇時中間件。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
asp.net實例代碼protected override void Render(HtmlTextWriter wri
把最終要輸出的html壓縮后再輸出和最終輸出前先存為html文件,如果發(fā)布最新信息了,可以打開一次default.aspx,然后他又會生成一次html2008-08-08.NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊
本文詳細講解了.NET?Core使用flyfire.CustomSerialPort實現(xiàn)Windows/Linux跨平臺串口通訊的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01WPF使用ValidationRules對MVVM架構數(shù)據(jù)驗證
這篇文章介紹了WPF使用ValidationRules對MVVM架構數(shù)據(jù)驗證的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01