ASP.NET MVC 的 Razor 語法如何顯示關鍵字符號 @
在 ASP.NET MVC 前端的 View 語法,除了基本的 HTML + JavaScript + CSS 語法之外,還採用了 Razor 語法。
Razor 是將伺服器端的語法嵌入到前端 View 頁面的標記語法,存放的副檔名類型為 .cshtml。
Razor 語法開頭使用 @ 符號表示會執行 Razor 指令,語法內容支援 C# 語法。
Razor 語法簡易介紹
以下介紹幾個常見的 Razor 語法
1. 取得目前日期
1 2 3 |
@{ string time = DateTime.Now.ToString("yyyy/MM/dd"); } |
被 @{ }
框起來的內容就會是伺服器 C# 語法的內容。
2. 顯示 Controller 傳遞字典值
1 |
@ViewBag.Name |
如果在 Controller 端有設定 @ViewBag.Name
的話,就可以在前端 View 頁面顯示出該值了。
Razor 顯示關鍵字 @ 符號
如果想要在網頁上顯示 @abc ,然後語法上輸入 @abc 是會回傳錯誤的。
因為 @ 是關鍵字符號,會轉譯成 C# 語法,就會因為編譯錯誤而失敗。
可是如果直接輸入信箱地址 aaa@abc.com
是可以正常顯示的。
因為 @ 符號前面有字母,所以被視為字串的一種,就不會轉換成 C# 語法。
所以 Razor 執行的關鍵字 @ 符號前面是空格或是換行才會被解析。
如果 @ 做為Razor 的關鍵符號,那如果要在網頁上顯示 @ 該怎麼顯示呢?
如果要直接顯示 @ 在網頁上可以使用連續輸入兩個 @,用 @@ 表示就可以正常顯示一個 @ 符號了。
語法範例:
1 2 |
<p>顯示 @@ 符號</p> <p>@@Username</p> |
可以正常顯示一個 @ 符號。
Razor 顯示語法式字串
在 HTML 裡面如果輸入 <script>alert(1)</script>
是會被 JavaScript 執行的,如果要在 Razor 顯示 <script>alert(1)</script> 的字串在網頁上,可使用以下的語法。
1 2 3 4 |
@{ string script = "<script>alert(1)</script>"; } @script |
在 C# 設定的字串,放到 HTML 顯示時,預設會轉為字文輸出,即使它為一段 Javascript 也不會執行。
同以上的方法,在 Razor 設定的字串不會被執行,所以要在網頁上顯示一個 @ 符號也是可行的。
1 2 3 4 |
@{ string script = "@"; } @script |
用這樣的語法也會顯示剛剛用 @@ 得到的結果,但是會比較好理解一點。
PS:
如果你想要讓 C# 的字串,可以正常被 HTML 編譯,可以使用 @Html.Raw(script)
語法來執行喔。
關於 ASP.NET 的 Razor 官方語法參考可看這裡
相關學習文章
- [C#] Base64 Convert.ToBase64String 基本轉碼及適用網址參數轉碼延伸應用
- [ASP.NET MVC] 取得 Request 常用資訊 (IP, 作業系統, 瀏覽器, 呼叫網址)
- [ASP.NET MVC] 產生 Bootstrap + Vue.js 多層式選單範本教學 (附範例)
如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝