在 HTML5 中, 可以使用 data- 屬性來表示用戶數據,這些數據甚至可以是 JSON 格式的數據,對 Web 前端開發帶來很大的方便。
在 MVC 的 Razor 中,可以使用匿名對象來生成定制的屬性,不過,這樣的屬性可不能通過 Razor 的語法檢查。
new{ data-id= 1 }
編譯器會直接報告錯誤。 The name 'data' does not exist in the current context ,原因很簡單,把 - 號當作運算符了。
其實,HtmlHelper 提供的方法 AnonymousObjectToHtmlAttributes 已經可以解決這個問題,方法的說明如下所示。
Replaces underscore characters (_) with hyphens (-) in the specified HTML attributes.
我們可以在匿名對象中直接使用下划線 (_) 來代替減號 (-) ,HtmlHelper 會在呈現中,將下划線替換為減號的。
例如,下面的寫法
@Html.TextBox("username", "noname", new{ data_name="tom" })
會生成如下的 HTML5 標記。
<input data-name="tom" id="username" name="username" type="text" value="noname" />