ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 06. Controller 返回View


Controller父類會提供不少上下文的相關信息,還提供了不少封裝的方法

返回的對象要求實現了IActionResult接口

繼承父類,並引入命名空間

寫this點就出現不少東西,這些就是上下文的信息。

這就獲取了Controller的名字

action的name

還有一個咱們熟悉的對象HttpContext對象

能夠看request的Body或者Header等等的一些信息

也能夠操做ResponseWrite,可是不建議這麼作

不建議在Controller裏面直接訪問HttpContext對象,不利於單元測試
能夠return OK方法

F12查看OK的源碼


還封裝了返回文件的方法,也實現了IActionResult接口

還能夠使用this.Content返回一串文字

而後修改Action的返回類型爲IActionResult

F12進去能夠看到實際的返回類型爲ContentResult

Action決定要作什麼事,真正作這個事的是MVC框架
使用IactionResult更靈活,更利於擴展
簡歷model文件夾,並新建類Student類

ObjectResult返回實體對象

Controller把這個學生的信息放在ObjectResult裏面,到底怎麼處置這個ObjectResult是有管道里的其餘環節來處理的
預覽,瀏覽器裏面返回的是Json結果
html

Action返回視圖



viewRresult能夠附帶一個model對象,視圖能夠使用model來建立html
View()的返回結果是ViewResult

運行起來發生錯誤,這裏沒有找到對應的cshtml頁面


若是View啥都寫就會找對應的Action名字的視圖文件,
咱們在View裏面寫個Student

運行效果,它就會去找Student.cshtml頁面

創建:View/Home/Index.cshtml文件



運行效果

把st做爲參數返回給view

有一個特殊的變量,@Model使用這個變量來訪問傳過來的Model對象
@Model就表示從Action的View傳過來的對象

指定@Model的具體類型,如今是個dynamic的類型
也是爲了寫代碼的時候有隻能提示

使用一個指令讓@Model有隻能提示

這裏用消息的@model它是一個指令。大寫的@Model是傳過來的對象,這兩個容易混淆
這個指令能夠提供一些信息
用小寫的model來告訴大寫Model它的類型

這樣直接把屬性的字段能夠點出來了

運行結果


新建文件夾Services/下面新建文件IRepository.cs

如今的數據類型是Student,之後多是其餘的類型,因此這裏使用泛型

這是一個接口

創建實現類,由於咱們是寫死的數據
,因此叫作InMemeryRepository
實現接口傳入Student類型

建立三條學生的數據
瀏覽器

註冊服務

這裏使用AddScope。表示每次Http請求會產生新的實例


Controller裏面構造函數注入

這是ReSharper的插件的快捷方式



view頁面指定model的類型,而後循環輸出數據


這裏把多餘的引用去掉


 框架

相關文章
相關標籤/搜索