[小菜一碟] 如何在 ASP.NET Core MVC 的 View 中單獨取得含有檔案版本雜湊值的檔案路徑?

在開發網頁程式我們最害怕的場景其中之一,就是我們的靜態檔案(*.js、*.css、*.png、...)後端已經更新了,但是在前端看到的依然是舊的版本,這個問題在 ASP.NET Core 我們可以透過一個 asp-append-version 的 TagHelper 來解決,它會自動地根據靜態檔案的內容產生一個含有雜湊值版本的網址,如果我們不透過 TagHelper 也想取得這樣的網址,我們要怎麼弄?

Open Source 的好處再次地在這個地方顯現,我直接用 asp-append-version 當關鍵字在 ASP.NET Core 的儲存庫當中做搜尋,最終我在 LinkTagHelper.cs 第 283 行找到線索,原來含有靜態檔案內容雜湊值版本的網址是透過 FileVersionProvider.AddFileVersionToPath() 方法產生的,那我們就直接拿來用就好了。

假設我要在網頁載入後 3 秒,載入一個 myscript.js 執行裡面的內容,而 myscript.js 的網址要含有雜湊值版本,第一步我們先注入 IFileVersionProvider,讓我們有 FileVersionProvider 可以用。

第二步,我們就呼叫 AddFileVersionToPath() 方法,取得含有雜湊值版本的 myscript.js 網址,將其動態載入。

從執行結果可以看到,產生的 script src 值已經包含了雜湊值版本。

以上,不依賴 asp-append-version TagHelper 取得含有檔案內容雜湊值版本網址的方法就分享給大家,希望對大家有一點幫助。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學