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

来源: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
更多相關文章
  • WIFI破解,Python程式員必學技能。WIFI已經完全普及,現在Python程式員沒網,走到哪裡都不怕!教你們一招,如何在圖片中提取Python腳本代碼。圖片發送至手機QQ長按後點識別圖片中漢字,如果你還不知曉,趕緊去試一試,能給我們減少很大的工作量。 想要WIFI破解,python+字典,這是 ...
  • 話不多說,直接代碼,整個過程不需要發起Transaction ...
  • 7章 數組和集合 1.一維數組 2.二維數組 3.集合(ArrayList,哈希表) 8章 屬性與方法 1.屬性 2.方法 3.Main方法 9章 結構和類 1.結構 2.類 視頻地址:百度網盤:https://pan.baidu.com/s/1RlIDV0AvNL3xfnoWYe2idA 密碼:6 ...
  • using System;using System.Collections.Generic; namespace CustomUtils{ /// <summary> /// 事件管理器 /// </summary> public class EventManager { private reado ...
  • WXUserPara wxpara = new WXUserPara(); wxpara.userid = o.LoginName;//成員ID對應客戶端賬號 wxpara.name = o.Name;//成員名稱 wxpara.mobile = o.MobilePin;//手機號碼 ... ...
  • ASP.NET Core通過路由(Routing)設定,將定義的URL規則找到相對應行為;當使用者Request的URL滿足特定規則條件時,則自動對應到相符合的行為處理。從ASP.NET就已經存在的架構,而且用法也很相似,只有些許的不同。本篇將介紹ASP.NET Core的Router Middle ...
  • 索引 NET Core應用框架之BitAdminCore框架應用篇系列 一、簡介 本篇講解querySuite套件查詢按鈕區域的實現功能。 先來一張效果圖,其實沒啥特別的。 總共有5個已經做了預設實現的按鈕:查詢、添加、導入、導出、刪除。只需要配置相應的鏈接即可。 因為框架使用的是前後端分離,所以前 ...
  • 環境配置:windows ,VS,SQLite(點擊下載),System.Data.SQLite.DLL(點擊下載)。 目錄: 一、新建項目,添加引用 二、創建資料庫 三、創建表 四、插入數據 五、查詢數據 六、刪除數據 一、新建項目,添加引用 1.在VS中新建一個控制台應用程式,如下圖 2.添加引 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...