Contents

Net Core Environment Tag Helper 使用筆記

先前介紹ASPNETCORE_ENVIRONMENT是環境變數設定應用程式環境名稱。這篇Environment Tag Helper 支持根據不同的環境載入不同的內容。Tag 屬性有分 include,exclude。

Warning

你使用的時候沒效果,需要注意載入 TagHelpers

1
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

成功的話,滑鼠移過去可以看到提示,如下圖。
https://user-images.githubusercontent.com/6058558/205927277-1b0e6efb-4e60-4c44-9658-9f45930f971c.png

失敗的話,會是這樣。
https://user-images.githubusercontent.com/6058558/205927435-d8b33b63-b51b-483a-a7c0-e1e19b79ad55.png

簡單範例

1
2
3
4
5
6
<environment include="Development">
    <link href="~/lib/bootstrap/css/bootstrap.css" rel="stylesheet">
</environment>
<environment include="Stage,Production">
    <link href="~/lib/bootstrap/css/bootstrap.css" rel="stylesheet">
</environment>
1
2
3
<environment exclude="Development">
    <link href="~/lib/bootstrap/css/bootstrap.css" rel="stylesheet">
</environment>

CDN CSS JS 連結錯誤(404)直接使用本地 CSS(神功能)

在Layout把 bootsrap 連結換掉

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <environment include="Development">
        <link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet"/>
    </environment>

    <environment exclude="Development">
        <link rel="stylesheet"
                integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
                crossorigin="anonymous"
                href="https://sstackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
                asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.css"
                asp-fallback-test-class="sr-only" asp-fallback-test-property="position"
                asp-fallback-test-value="absolute"
                asp-suppress-fallback-integrity="true"/>
    </environment>

https://i.imgur.com/aoPCcSR.png

修改服務的環境變數,改成驗證環境

https://i.imgur.com/kT3IKcA.png

這邊你把隨便一個integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"改掉,會出現下面倒 cdn 錯誤訊息,但css會吃到本地端。(神作)
我目前看別的程式框架沒有這種解決方案,雖然用動態程式js去解決這個問題,不知道是不是好的方式。

https://i.imgur.com/GZOvbtI.png

https://i.imgur.com/Gaosrq5.png

asp-fallback-href 原理

asp-fallback-href:href失效後的備用鏈接
asp-fallback-test-class:會生成一個meta標籤,類名就是該值。必須是href所指CSS裡擁有的類
asp-fallback-test-property:必須是href所指CSS裡擁有的類的屬性
asp-fallback-test-value:必須是href所指CSS裡擁有的類的屬性的值
asp-suppress-fallback-integrity:驗證備用鏈接所指文件完整性

https://i.imgur.com/QQGS9Nn.png

參考: .net core中的asp-fallback大致原理_Acsxionian的博客-CSDN博客

彩蛋

.Net Core Razor View 變數串接寫法