在.NET 4.0中,當將控件添加到頁面或者用戶控件,有一個新的選擇項:ClientIDMode。此屬性為您提供四種選擇:Legacy, Static, Predictable, Inherit。在此之前,幾乎不可能找到在一個正確的控件的ID。現在在ASP.NET4.0中,選擇Legacy將與以前的asp.net版本產生的方式相同,連接每個控件的ID和父容器的名字。設置為Static將生成服務器控件ID屬性設置的值。Predictable用於控件的數據綁定,如 repeater控件,而且還要使用ClientIDRowSuffix屬性。
在下面的例子,兩個列表在一個頁面的ContentPlaceHolder內創建,使用相同的數據源。第一個使用默認的,第二個使用 Static 。
1 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
2 <asp:XmlDataSource ID="LinkData" runat="server" XPath="Colors/Color">
3 <Data>
4 <Colors>
5 <Color Name="Red"/>
6 <Color Name="Blue"/>
7 <Color Name="Yellow"/>
8 <Color Name="Green" />
9 </Colors>
10 </Data>
11 </asp:XmlDataSource>
12 <asp:BulletedList ID="uxList" DataSourceID="LinkData"
13 runat="server" DataTextField="Name" />
14 <asp:BulletedList ID="uxListStatic" ClientIDMode="Static"
15 DataSourceID="LinkData" runat="server" DataTextField="Name" />
16
17 <script type="text/javascript">
18 $(function() {
19 $("#uxList").append("<li>Red</li>");
20 $("#uxListStatic").append("<li>Brown</li>");
21 });
22 </script>
23 </asp:Content>
HTML輸出如下:
1 <div>
2 <ul id="ctl00_ContentPlaceHolder1_uxList">
3 <li>Red</li><li>Blue</li><li>Yellow</li><li>Green</li>
4 </ul>
5 <ul id="uxListStatic">
6 <li>Red</li><li>Blue</li><li>Yellow</li><li>Green</li>
7 </ul>
8
9 <script type="text/javascript">
10 $(function() {
11 $("#uxListStatic").append("<li>Brown</li>");
12 });
13 </script>
14 </div>
浏覽器中輸出:
• Red
• Blue
• Yellow
• Green
• Red
• Blue
• Yellow
• Green
• Brown