ASP.NET Core MVC 從入門到精通之佈局

来源:https://www.cnblogs.com/hsiang/archive/2023/04/17/17323500.html
-Advertisement-
Play Games

隨著技術的發展,ASP.NET Core MVC也推出了好長時間,經過不斷的版本更新迭代,已經越來越完善,本系列文章主要講解ASP.NET Core MVC開發B/S系統過程中所涉及到的相關內容,適用於初學者,在校畢業生,或其他想從事ASP.NET Core MVC 系統開發的人員。 經過前幾篇文章... ...


隨著技術的發展,ASP.NET Core MVC也推出了好長時間,經過不斷的版本更新迭代,已經越來越完善,本系列文章主要講解ASP.NET Core MVC開發B/S系統過程中所涉及到的相關內容,適用於初學者,在校畢業生,或其他想從事ASP.NET Core MVC 系統開發的人員。 經過前幾篇文章的講解,初步瞭解ASP.NET Core MVC項目創建,啟動運行,以及命名約定,創建控制器,視圖,模型,接收參數,傳遞數據,路由等內容,今天繼續講解ASP.NET Core MVC 佈局等相關內容,僅供學習分享使用。

 

什麼是佈局?

 

大多數 Web 應用都有一個通用佈局,可在頁面間切換時為用戶提供一致體驗。 該佈局通常包括應用標頭、導航或菜單元素以及頁腳等常見的用戶界面元素。在如下佈局中,Content內容隨著不同請求而改變,其他頁面內容則很少改變,進而形成統一的風格,一致的用戶體驗,這就是佈局的好處。

 

佈局的優勢

 

在ASP.NET Core MVC項目中,使用佈局具有以下幾個優勢:

  1. 佈局可使頁面在不同的請求之間保持一致的用戶體驗。
  2. 佈局可減少視圖中的重覆代碼。

 

佈局的分類

 

按照約定,預設佈局名為 _Layout.cshtml。 使用模板創建的新 ASP.NET Core 項目的佈局文件為:

  • 基於頁面的佈局文件,Razor 頁面: Pages/Shared/_Layout.cshtml
  • 基於視圖控制器的佈局文件,具有視圖的控制器: Views/Shared/_Layout.cshtml

 

預設佈局

 

在通過模板創建的ASP.NET Core MVC項目中,預設會生成佈局視圖【Views/Shared/_Layout.cshtml】,佈局視圖主要包括三部分:

  1. 引入公共的JavaScript腳本,CSS樣式等資源文件
  2. 定義公共的Header,Footer,Left Navigation等用戶頁面元素
  3. 定義Content區域,通過@RenderBody()來提供Content占位符。

佈局視圖示例如下所示:

預設情況下,每個佈局必須調用 RenderBody。 無論在何處調用 RenderBody,都會呈現視圖的內容。

 

指定佈局

 

視圖具有Layout屬性,可以指定使用不同的佈局視圖。指定的佈局可以使用完整路徑 (,例如/Views/Shared/_Layout.cshtml/Pages/Shared/_Layout.cshtml) 或部分名稱 (示例: _Layout) 。 

預設情況下【_ViewStart.cshtml】指定預設的佈局視圖,頁面內容如下所示:

 

導入共用指令

 

視圖和頁面可以使用 Razor 指令來導入命名空間並使用依賴項註入。 可在一個共同的 _ViewImports.cshtml 文件中指定由許多視圖共用的指令。 _ViewImports 文件支持以下指令:

  • @addTagHelper
  • @removeTagHelper
  • @tagHelperPrefix
  • @using
  • @model
  • @inherits
  • @inject
  • @namespace

註意:該文件不支持函數和節定義等其他 Razor 功能。

預設情況下,【_ViewImports.cshtml】頁面內容如下所示:

 _ViewStart.cshtml,_ViewImports.cshtml 通常放置在 Pages (或 Views) 文件夾中。如下所示:

 註意:_ViewImports.cshtml文件可以放置在任何文件夾中,在這種情況下,該文件將僅應用於該文件夾及其子文件夾中的頁面或視圖。 從根級別開始處理 _ViewImports 文件,然後處理在頁面或視圖本身的位置之前的每個文件夾。 可以在文件夾級別覆蓋根級別指定的 _ViewImports 設置。

如果在文件層次結構中找到多個 _ViewImports.cshtml 文件,則指令的組合行為如下所示:

  • @addTagHelper@removeTagHelper:按順序全部運行
  • @tagHelperPrefix:最接近視圖的文件會替代任何其他文件
  • @model:最接近視圖的文件會替代任何其他文件
  • @inherits:最接近視圖的文件會替代任何其他文件
  • @using:全部包括在內;忽略重覆項
  • @inject:針對每個屬性,最接近視圖的屬性會替代具有相同屬性名的任何其他屬性

 

取消佈局

 

通過預設模板創建的程式,預設是應用佈局文件,效果如下:

 註意:content內容也應用了佈局文件中公共的css樣式和javascript腳本等資源。

在視圖中,通過指定Layout屬性可以取消或替換佈局,如下所示:

1 @{
2     ViewData["Title"] = "Home Page";
3     Layout = null;
4 }
5 
6 <div class="text-center">
7     <h1 class="display-4">Welcome</h1>
8     <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
9 </div>

取消佈局效果,如下所示:

通過對比發現,取消佈局後,原有的居中效果也消失了。說明失去了原有佈局文件中css樣式的支持。

以上就是ASP.NET Core MVC從入門到精通之佈局的全部內容,旨在拋磚引玉,一起學習,共同進步。


作者:小六公子
出處:http://www.cnblogs.com/hsiang/
本文版權歸作者和博客園共有,寫文不易,支持原創,歡迎轉載【點贊】,轉載請保留此段聲明,且在文章頁面明顯位置給出原文連接,謝謝。
關註個人公眾號,定時同步更新技術及職場文章


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

-Advertisement-
Play Games
更多相關文章
  • 安裝Zookeeper和Kafka集群 本文介紹如何安裝Zookeeper和Kafka集群。為了方便,介紹的是在一臺伺服器上的安裝,實際應該安裝在多台伺服器上,但步驟是一樣的。 安裝Zookeeper集群 下載安裝包 從官網上下載安裝包: curl https://dlcdn.apache.org/ ...
  • 原文鏈接:https://www.zhoubotong.site/post/94.html 說下背景吧,大家在開發中可能在不同的目錄(package)下定義了相同的struct(屬性參數完全一樣如名字、個數和類型),在方法調用傳參數的時候,可能是用到了其中某一個struct的引用。 那麼這裡就牽扯到 ...
  • Java的反射機制允許程式員在執行期藉助於Reflection API取得任何類的內部信息,並能操作對象的屬性和方法,在各類框架中應用非常廣泛。這一期是關於反射內容的筆記,包含Class類、Field類、Method類、Constructor類及相關方法。 ...
  • Gin 環境:https://goproxy.cn,driect github.com/gin-gonic/gin 介紹 Gin 是一個用 Go (Golang) 編寫的 Web 框架。 它具有類似 martini 的 API,性能要好得多,多虧了 httprouter,速度提高了 40 倍。 如果 ...
  • 前言 Disruptor的高性能,是多種技術結合以及本身架構的結果。本文主要講源碼,涉及到的相關知識點需要讀者自行去瞭解,以下列出: 鎖和CAS 偽共用和緩存行 volatile和記憶體屏障 原理 此節結合demo來看更容易理解:傳送門 下圖來自官方文檔 官方原圖有點亂,我翻譯一下 在講原理前,先瞭解 ...
  • 作者:馬佩 鏈接:https://juejin.cn/post/7146016771936354312 場景 當我們業務資料庫表中的數據越來越多,如果你也和我遇到了以下類似場景,那讓我們一起來解決這個問題 數據的插入,查詢時長較長 後續業務需求的擴展 在表中新增欄位 影響較大 表中的數據並不是所有的 ...
  • 大家好,我是陶朱公Boy。(一個認真生活總想超越自己的程式員) 一線互聯網Java技術專家,有超過8年+後端開發、架構經驗。公眾號:「陶朱公Boy」歡迎大家關註! 星球簡介 一個幫你學編程、做項目、找工作少走彎路的交流圈,進步從此開始! 加入後你可以: 1.獲取陶朱公原創編程學習路線、原創編程知識庫 ...
  • 1. 示例 首先,定義一個介面: public interface Staff { void work(); } 然後,新增一個類並實現上面的介面: public class Coder implements Staff { @Override public void work() { System ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...