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

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

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

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

