ASP.NET Core Blazor簡介(jie)和(he)快速入(ru)門三(布局和(he)路由(you))
一(yi)、創建和應(ying)用Blazor 布局
網站應(ying)用(yong)往往有許(xu)多公(gong)共的(de)視圖部(bu)分,比(bi)如(ru)頂部(bu)導航nav,底部(bu)的(de)footer,管(guan)理系統的(de)左邊的(de)menu菜單等(deng)等(deng)。Layout可(ke)以(yi)輕松實現以(yi)上(shang)的(de)效果(guo)。
Blazor 布(bu)局(ju)是一個 Razor 組件,它與引用該布(bu)局(ju)的(de)(de)組件共(gong)享標記。 布(bu)局(ju)可以使(shi)用數據綁定、依(yi)賴關系注入和組件的(de)(de)其他(ta)功(gong)能。
1、創建布局(可以理解為母版頁)
新(xin)建一個razor文(wen)件(jian),文(wen)件(jian)頂部使(shi)用@inherits LayoutComponentBase 表示繼承自LayoutComponentBase ,說明這是個母版頁(ye),使(shi)@Body作為占位(wei)。

2、MainLayout 組件
在從 Blazor 項目模板創建的應用中,MainLayout 組件就是應(ying)用的默(mo)認布局(ju)。
Blazor 的 CSS 隔離功能將獨立 CSS 樣式應用于 MainLayout 組件。 按照慣例,樣式由相同名稱的隨附樣式表 MainLayout.razor.css 提供。

?
3、應用布局
在razor文件頂部(bu)申明“@layout 模板(ban)頁(ye)名”來設置母版頁(ye),

如果一個頁面沒(mei)有設置模板(ban)頁,(就(jiu)像(xiang)blazor默認項(xiang)目那樣(yang)),他就(jiu)會使用在app.razor文件中定義的默認模板(ban)頁
?
如何不設置任何模板頁?
比如我們的(de)登(deng)錄(lu)的(de)頁面是不需要(yao)加通用模板的(de),通過(guo)@if 控制 RouteView的(de)DefaultLayout即(ji)可
4、嵌套布局
組件可以引用(yong)一個(ge)布(bu)(bu)局,該(gai)布(bu)(bu)局又可以引用(yong)另一個(ge)布(bu)(bu)局。 例如,嵌套布(bu)(bu)局可用(yong)于創建多級菜單結構。
以下示例演示如何使(shi)用嵌套布局:
ProductionsLayout 組件包含頂級布局元素,其中包含有標頭 (<header>...</header>) 和頁腳 (<footer>...</footer>) 元素。 帶有DoctorWhoLayout組件的 Episodes 會在@Body出現的位置顯示。
以下呈現的 HTML 標記由前面(mian)的嵌(qian)套布局生(sheng)成:
更多參考:
二、路由配置和導航
ASP.NET Core Blazor 路由配置和導航 - 碼農剛子 - 博客園
三、條件渲染和循環渲染
第一章中已經(jing)講過了(le)Blazor的(de)語法。
1、Blazor 條件渲染
Blazor 中的 @if 語法(fa)用于根據條件動態渲(xuan)染(ran)頁(ye)面元素。它類(lei)似于 C# 的 if 語句,但專門(men)用于處理 UI 渲(xuan)染(ran)。請看以下示例(li):
你可以嵌套多個 @if 或結合 else if 使用:
2、Blazor 循環渲染
下面(mian)我們有(you)一(yi)個(ge)list需要顯示(shi)多(duo)個(ge)學(xue)生信息(xi),@for,@do…while,@while 與(yu)foreach類似(si)這里就不在贅述

