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
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的類型,而後循環輸出數據
這裏把多餘的引用去掉
框架