利用C#字串插值功能,讓script標籤更好躲過編譯器檢查

C# 6.0的字串插值(String Interpolation)是我個人超級喜歡使用的功能,也有人將中文翻譯為「字串插補」、「字串內插補點」等。此篇文章要討論的是由於這個功能的出現,改變了我們傳統上在那邊組合字串的行為,當然也可以順道改變在ASP.NET Code Inline模式下為了欺騙編譯器,在那邊彆扭的組合Client端的HTML script標籤的行為。

可能會有人說,不應該在程式碼裡面使用字串組合Javascript,要用正規的管道例如透過Page.ClientScript.RegisterClientScriptBlock來進行,可是我就是不喜歡這個機制,且我自己的框架中已經有針對Javascript打造更便利更有彈性的寫入方式了。

ASP.NET Code Inline模式撰寫<script>標籤寫法

為了閃避編譯器對於Server Side標籤的混淆,大概只能這樣寫...

string cJS = "<script>alert('Hello!');" + "<" + "/script>";

ASP.NET Code Inline模式撰寫<script>標籤寫法(利用字串插值)

有了字串插值(String Interpolation)寫法變得超精簡,更好閱讀(這篇文章簡單的JS看不出明顯差異),尤其在複雜的字串組合狀態下,更能凸顯這樣寫法的優越。

string cJS = $"<script>alert('Hello!');{'<'}/script>";

若有跟我一樣需求的使用者,強烈建議採用這個寫法比較順暢喔。

C# StringInterpolation ASP.NET CodeInline Insert Add Combine Define Javascript HTML Script ScriptTag