身為 ASP.NET MVC 開發者,我們享受對 HTML 完全掌控的自由,但也因此必須逐行撰寫 HTML 標記。這在團隊協作時尤為明顯:前端設計師(稱他為 Ricky)制定了嚴格的 CSS 命名與結構規範,例如每個文字方塊必須包裹在 <li> 中、擁有對應的 <label for="...">、使用 <input type="text"> 等。開發者稍有疏忽(如忘記 <li>),就會導致樣式失效,雙方溝通成本極高。
以一個簡單的「名字」輸入框為例,傳統 View 寫法如下:
<li>
<label for="FirstName">First name</label>
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
</li>
這類重複程式碼不僅冗長,還容易因人為疏失違反 UI 規範。
Html.NewText(...),學習曲線平緩。ViewHelper 並非將 HTML 抽象化,而是將「產生 HTML 的邏輯」延遲到專門的類別中。開發者依然掌控最終輸出,只是不再手寫樣板。理想呼叫語法:
<% Html.NewText("FirstName", "First name"); %>
目前最常見的擴充方法使用語法為 <%= Html.TextBox("FirstName") %>,回傳字串直接輸出。ViewHelper 將在此基礎上更進一步,封裝整組結構。下一篇將展示具體實作細節。