ASP.NET 4.0 引入 ClientIDMode 屬性,徹底解決舊版控件 ClientID 被自動加上命名容器前綴(如 ctl00_ContentPlaceHolder1_)導致 JavaScript 選取困難的問題。
| 模式 | 行為 | 適用場景 |
|---|---|---|
| Legacy | 舊版行為,串聯所有命名容器 ID | 相容舊專案 |
| Static | 直接使用控件的 ID 屬性值 | 需精確控制 ClientID,如 jQuery 選取 |
| Predictable | 資料繫結控件(Repeater 等)生成可預測 ID,配合 ClientIDRowSuffix | 清單/重複項模板 |
| Inherit | 繼承父控件或頁面設定 | 統一專案層級策略 |
<asp:BulletedList ID="uxList" DataSourceID="LinkData" runat="server" DataTextField="Name" />
<asp:BulletedList ID="uxListStatic" ClientIDMode="Static" DataSourceID="LinkData" runat="server" DataTextField="Name" />
<ul id="ctl00_ContentPlaceHolder1_uxList">...</ul> <!-- Legacy -->
<ul id="uxListStatic">...</ul> <!-- Static -->
$(function() {
$("#uxListStatic").append("<li>Brown</li>"); // 直接用 ID 選取
});
使用 Static 模式後,前端腳本無需猜測 ClientID,大幅簡化前後端整合。