The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET Core MVC 的 Razor 語法對於 @ 符號的編碼陷阱

前幾天我們公司有個網站準備上一個新版,工程師發出 PR (Pull request) 之後請我進行程式碼審核(Code Review),結果我發現他本次的修正項目不太合理,他改了一個前端套件的資料夾名稱。我當下覺得不妙,一個已經測試數月,也準備上線的網站,怎麼還會在最後一刻修改資料夾名稱呢?我反問工程師為什麼要改這些地方時,卻得到一個我不是很滿意的回答,因此退件請他重改。這不是一個什麼嚴重的技術問題,改改資料夾名稱就正常了,但是卻又激起我追根究底的柯南精神,真相只有一個,我要找出來!🕵️‍♂️

... 繼續閱讀 ...

啟用 Razor 執行階段編譯 (Enable Razor runtime compilation) 技術細節探索

其實我們這幾年幾乎都在用前後端分離的架構在開發網站,單純使用 ASP.NET Core MVC 的機會並不多,但是我知道很多人還是在用 MVC 在維護網站,而且 ASP.NET Core 預設會將所有 Razor 頁面 (Views) 編譯成 DLL 檔,網站啟動之後如果要修改 View 的內容,還需要重新編譯專案才能測試到新的結果,非常不方便。如果要啟用所謂的 Razor 執行階段編譯 (Razor runtime compilation) 就要對專案做出一點設定,但是網路上能查到的文件都沒有對技術細節講的足夠深入,所以我也花了一些時間探索了許多技術細節,打算在這篇文章呈現。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (27):讓 Razor 在 HTML 屬性中輸出 @ 符號

我們有個 ASP.NET MVC 專案上周在做程式碼安全性檢查 Code Review 時,發現開發人員在 Razor 頁面中使用了一些 @Html.Raw() 輸出未經 HTML 編碼的內容,正常來說,在 ASP.NET MVC 網站應用程式中,不應該太過頻繁地出現這種用法,所以只要看到就會特別查看一下,這才發現原來 Razor 從 V2 版開始,就存在著這個小問題 (Bug),所以大家還是要注意一下。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (26):關於 Razor 的運作原理與改進特性

ASP.NET MVC 3 開始提供的 Razor V1 改變了以往使用 WebFormView 的寫作習慣,讓我們在 檢視頁面 (View Page) 中的 HTML 與伺服器端的語法 (Razor) 混和得更漂亮,不再有醜陋的 <% … %> 符號了。然而從 ASP.NET MVC 4 開始,在 Razor 推出了第二版,有許多增強的特性,本篇文章將介紹這些增強的特性。而到了 ASP.NET MVC 5 推出了 Razor V3 版,這版只有修正一些程式錯誤,並沒有功能增強。

... 繼續閱讀 ...

在 ASP.NET MVC 使用 @Html.ActionLink 所發生的詭異現象

上上禮拜同事在開發一個 ASP.NET MVC 專案時遇到一個詭異問題,就是在 View 裡面輸出超連結時竟然會多出詭異的查詢字串(QueryString),他使用標準的 @Html.ActionLink 輔助方法輸出 <A> 超連結時,竟然有些超連結的尾巴會加上 ?Length=4 這個查詢字串,但是在 ASP.NET MVC 的 View 裡根本就沒這樣設定。然而上週在台中教授 ASP.NET MVC 課程,竟然也有學員再次遇到相同的問題,我猜想這可能是初學者都會遇到的常見問題,特別寫文章來提醒各位。

... 繼續閱讀 ...