The Will Will Web

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

如何在 C# 中使用關鍵字當屬性名稱 ( ASP.NET MVC )

最近在看 Oxite 原始碼的時候,發現一段有趣的程式碼,感覺很像 Perl 的陣列,但我從未在 C# 程式中看到有人這麼用,如下範例:

<%= Html.TextBox("username", Request["username"], 
       new { 
          id = "login_username", 
          @class = "text", 
          tabindex = "1", 
          title = Localize("Your username...")
       }
   ) %>

我覺得奇怪的地方是在 Html.TextBox 第三個參數的地方用的雖然是一個匿名型別,但有個屬性設定時竟然是 @class 耶,第一眼看到的感覺是「好奇怪」的寫法,難道又是什麼未公開的密技嗎?因為我從未這樣寫過。

這段程式是 ASP.NET MVC 的 View 常用的一個 HTML Helpers 寫法,因為 ASP.NET MVC 的 View 經常需要透過 HTML Helpers 輸出標籤或表單欄位,而在設定時經常需要設定額外的 HTML 屬性(Attributes),所以才需要第三個參數設定,���是若要設定 HTML 中的 class 屬性時,就遇到大災難了!因為 class 是 C# 關鍵字(保留字),照裡說不能出現在屬性、欄位、方法、變數名稱中。

查證得知,原來在 C# 中還是可以使用保留字當識別名稱,只要前面加上一個小老鼠符號 ( @ ) 即可!

這個技巧對於 ASP.NET MVC 開發人員來說非常的重要,不然每次用 HTML Helper 時都不能設定 class 屬性時,心中的怒火應該會越燒越旺!^_^

相關連結