ASP.NET 2.0 時代的 CSS Friendly Control Adapters 雖解決了控件輸出 HTML 不可控的問題,但類名硬編碼、需部署原始碼、修改困難等缺陷明顯。ASP.NET 3.5 引入 ListView 控件,以模板化設計徹底解決 HTML 輸出可控性,標誌著 Web Forms 向標準化輸出的回歸。
AspNet-Menu、AspNet-Menu-WithChildren 等 PascalCase 加連字號命名,與團隊慣用的 camelCase 或 BEM 風格衝突CssClass 屬性失效:Control Adapter 重寫輸出結構,原有 CssClass 不再對應任何元素<asp:ListView ID="lvProducts" runat="server">
<LayoutTemplate>
<ul class="product-list">
<li runat="server" id="itemPlaceholder" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li class="product-item">
<h3><%# Eval("Name") %></h3>
<span class="price"><%# Eval("Price", "{0:C}") %></span>
</li>
</ItemTemplate>
</asp:ListView>
優勢:
ul/ol/table/div)與項目結構class、id、data-* 屬性,CSS/JS 整合零阻力GroupTemplate、InsertItemTemplate、EditItemTemplate 等豐富模板DataPager 分頁,無需額外控件從拖拉元件回歸手寫模板,看似倒退,實則是承認「伺服器端模板引擎」的本質:無論 ASP.NET、PHP、JSP、Rails,資料驅動視圖的核心邏輯都是「迴圈輸出 HTML 片段」。ListView 只是將這層本質誠實地暴露出來,交還開發者控制權。
ListView 已涵蓋二維表格資料呈現的所有需求,GridView/DataList/Repeater 可全面替代。下一步期待針對樹狀結構(選單、站點地圖)的 TreeView / Menu 同樣提供模板化控制,徹底實現 CSS Friendly。