ASP.NET Core 2 學習筆記(六)

来源:https://www.cnblogs.com/snaildev/archive/2018/05/26/9092213.html
-Advertisement-
Play Games

ASP.NET Core MVC跟ASP.NET MVC觀念是一致的,使用上也沒有什麼太大的變化。之前的ASP.NET MVC把MVC及Web API的套件分開,但在ASP.NET Core中MVC及Web API用的套件是相同的。 本篇將介紹ASP.NET Core MVC設置方式。 MVC 簡介 ...


 ASP.NET Core MVC跟ASP.NET MVC觀念是一致的,使用上也沒有什麼太大的變化。之前的ASP.NET MVC把MVC及Web API的套件分開,但在ASP.NET Core中MVC及Web API用的套件是相同的。

本篇將介紹ASP.NET Core MVC設置方式。

MVC 簡介

ASP.NET Core的MVC(Model-View-Controller)架構模式延續ASP.NET MVC,把網站分成三大元件ModelViewController,依賴關係如下圖:

  • Model
    負責數據處理,包含數據存取、業務邏輯、定義數據對象及驗證數據。
  • View
    負責UI顯示,如HTML、CSS等界面設計配置。
  • Controller
    負責將使用者Requset找到相對應的Model及View,做為控制流程的角色。

在ASP.NET Core中使用MVC或Web API,需要Microsoft.AspNetCore.Mvc套件。

註冊MVC 服務

Startup.csConfigureServices加入MVC的服務,併在ConfigureIApplicationBuilder使用UseMvcWithDefaultRoute方法註冊MVC預設路由的Middleware。如下:

Startup.cs

// ...
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvcWithDefaultRoute();
    }
}
  • UseMvcWithDefaultRoute

這個是ASP.NET Core的預設路由,會將Request來的URL找到對應的Controller及Action。

 

MVC 示例

Model

建立一個簡單的Model 用於Controller 跟View 互動。

Models\UserModel.cs

namespace MyWebsite.Models
{
    public class UserModel
    {
        // 名稱
        public string Name { get; set; } = "SnailDev";
    }
}

 

Controller

在項目目錄下建立一個Controllers文件夾,把Controller都放這個目錄。
過去ASP.NET把MVC及Web API用的Controller分為ControllerApiController,現在ASP.NET Core把兩者合一,不再區分ApiController
所以要建立一個類,名稱尾碼Controller即可,如下:

Controllers\HomeController.cs

namespace MyWebsite.Controllers
{
    public class HomeController
    {
        public string Index()
        {
            return "this is homecontroller index action";
        }
    }
}

但要讓Controller跟View互動,還是需要繼承Controller比較方便,如下:

Controllers\HomeController.cs

using Microsoft.AspNetCore.Mvc;
using MyWebsite.Models;

namespace MyWebsite.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            var user = new UserModel();
            return View(model: user);
        }
    }
}

IActionResult回傳的方式可以有很多種,通過繼承Controller後,就可以使用Controller的方法:

  • View
    以上例來說,通過回傳View方法,可以找到該Controller & Action對應的*.cshtml,並且把UserModel傳給View使用。
  • HTTP Status Code
    響應包含HTTP Status。常用的響應有OkBadRequestNotFound等。
    例如:return BadRequest("Internal Server Error"),會響應HTTP Status 400及Internal Server Error字串。
  • Redirect
    可以把Request轉給其他的Action或URL。轉向的方法有RedirectLocalRedirectRedirectToActionRedirectToRoute等。
    例如:return RedirectToAction("Login", "Authentication"),就會把Request轉向到AuthenticationController的Login()。
  • Formatted Response
    響應時指定Content-Type。Web API的回傳通常都用這種方式,序列化對象順便標註Content-Type。
    例如:return Json(user),會將對象序列化成JSON字串,併在HTTP Headers帶上Content-Type=application/json

 

View

View跟Controller有相互的對應關係,預設在Controller使用View方法回傳結果,會從以下目錄尋找對應的*.cshtml

  1. Views\{ControllerName}\{ActionName}.cshtml
    尋找與Controller同名的子目錄,再找到與Action同名的*.cshtml
    如上例HomeController.Index(),就會找項目目錄下的Views\Home\Index.cshtml文件。
  2. Views\Shared\{ActionName}.cshtml
    如果Controller同名的子目錄,找不到Action同名的*.cshtml。就會到Shared目錄找。如上例HomeController.Index(),就會找項目目錄下的Views\Shared\Index.cshtml文件

Views\Home\Index.cshtml

@model MyWebsite.Models.UserModel

Hello~ 我是 @Model.Name

*.cshtml@model綁定Model的型別,才可以使用@Model取得Controller傳入的對象。

示例結果

 

數據流動圖如下:

參考

Overview of ASP.NET Core MVC 
ASP.NET Core - Setup MVC

 

老司機發車啦:https://github.com/SnailDev/SnailDev.NETCore2Learning


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Spring Cloud封裝的Feign中並不直接支持傳文件,但可以通過引入Feign的擴展包來實現,本來就來具體說說如何實現。 原文:http://blog.didispace.com/spring cloud starter dalston 2 4/ 服務提供方(接收文件) 服務提供方的實現比 ...
  • 目錄 1. 什麼是正則化? 2. 正則化如何減少過擬合? 3. 深度學習中的各種正則化技術: L2和L1正則化 Dropout 數據增強(Data augmentation) 提前停止(Early stopping) 4. 案例:在MNIST數據集上使用Keras的案例研究 1. 什麼是正則化? 在 ...
  • 一、單個參數: 二、多參數: 三、Map封裝多參數: 四、List封裝in: 五、多參數傳遞之註解方式示: 六、selectList()只能傳遞一個參數,但實際所需參數既要包含String類型,又要包含List類型時的處理方法: 將參數放入Map,再取出Map中的List遍歷。如下: ...
  • 什麼是進程/線程 眾所周知,CPU是電腦的核心,它承擔了所有的計算任務。而操作系統是電腦的管理者,是一個大管家,它負責任務的調度,資源的分配和管理,統領整個電腦硬體。應用程式是具有某種功能的程式,程式運行與操作系統之上。 進程 進程時一個具有一定功能的程式在一個數據集上的一次動態執行過程。進程 ...
  • import time # 我們先以當前時間為準,讓大家快速認識三種形式的時間 print (time.time()) # 時間戳 :1487130156.419527 print (time.strftime("%Y-%m-%d %X")) # 格式化的時間字元串 :'2017-02-15 11: ...
  • 博客地址:http://www.cnblogs.com/yudanqu/ 一、讀文件 要把大象裝冰箱,需要分幾步?對於讀寫文件也是這樣簡單的流程,打開文件、讀取文件和關閉文件。 描述符:文件所有操作涉及到描述符,描述符就是一個游標,讀取數據可以從游標開始向後依次讀,等等。 1、打開文件 path:要 ...
  • 自從老羅搞出大爆炸之後,各家安卓都內置了類似功能。UWP怎麼能落下呢,在這裡我們就一起擼一個簡單的大爆炸實現。 ...
  • 如圖: 解決方案。第一步先卸載 Web 平臺安裝程式 5.0 第二步 將你添加配的文件刪除 第三步:重新安裝就可以了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...