ASP.NET4.0對伺服器控制項的ID的控制(節選自周公的部落格)

來源:互聯網
上載者:User

 

我們知道一個ASP.NET伺服器控制項有三個ID,即:ID,ClientID和UniqueID。

 

ID為伺服器控制項的伺服器標示,在伺服器代碼中通過ID來唯一區分伺服器控制項(因此在同一個頁面中ID必須唯一);

 

ClientID是伺服器控制項在轉化成HTML元素之後在用戶端的ID,為了防止出現命名衝突,ASP.NET 為頁上的各個伺服器控制項自動產生一個唯一的 ClientID 值。ClientID值是通過串連控制項的ID值和它的父控制項的UniqueID 值產生的。產生的 ID 的各個部分以底線 (_) 分隔;

UniqueID伺服器控制項的唯一的、以分層形式限定的標識符,它也是伺服器控制項轉化成HTML元素之後在用戶端的name標識。

有時候我們要在用戶端使用Javascript通過HTML元素的id來操作HTML元素,如果伺服器控制項在資料繫結控制項中,那麼它最終對應的HTML元素的id和我們平常使用的大不一樣,這使我們操作起來很不方便,特別是我們在用javascript實現資料的全選反選時不方便,因為在操作單個控制項時我們還可以按如下方式編寫javascript代碼:

 

<script type="text/javascript"><!--
    function DoSomething(){
        alert('<%= Control.ClientID %>');
    }
--></script>

 

而在ASP.NET中提供了對伺服器控制項的對應的HTML元素的id的控制更強了,增加了ClientIDMode屬性來控制。下面是一個展示ClientIDMode屬性用法的例子,在服務端編碼如下:

<asp:GridView ID="gvUserList" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:TemplateField HeaderText="UserId_AutoId">
            <ItemTemplate>
                <asp:Label runat="server" ID="lb1" ClientIDMode="AutoID"

                 Text='<%#eval("UserId") %>' />
            </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="UserId_Static">
            <ItemTemplate>
                 <asp:Label runat="server" ID="lb1" ClientIDMode="Static"

                 Text='<%#eval("UserId") %>' />
            </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="UserId_Predictable">
            <ItemTemplate>
                 <asp:Label runat="server" ID="lb1" ClientIDMode="Predictable"

                 Text='<%#eval("UserId") %>' />
            </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

 

如果我們進行資料繫結之後再查看產生的HTML原始碼,會看到類似的部分:

<table cellspacing="0" rules="all" border="1" id="MainContent_gvUserList" style="border-collapse:collapse;" mce_style="border-collapse:collapse;">
<tr>
<th scope="col">UserId_AutoId</th><th scope="col">UserId_Static</th><th scope="col">UserId_Predictable</th>
</tr>
<tr>
<td><span id="ctl00_MainContent_gvUserList_ctl02_lb1">136</span></td>
<td><span id="lb1">136</span></td>
<td><span id="MainContent_gvUserList_lb1_0">136</span></td>
</tr>
....
</table>

ClientIDMode="AutoID" 時控制項的用戶端ID和我們在早期的ASP.NET沒有什麼區別;

ClientIDMode="Static"時控制項的用戶端ID不會發生變化;

ClientIDMode="Predictable"時控制項的用戶端ID中還帶有資料行標識

(如:id="MainContent_gvUserList_lb1_0"中的“0”即標識在資料來源中的位置為0,即第一條記錄)。

通過指定ClientIDMode屬性可以讓我們很方便控制伺服器端控制項最終產生的HTML元素的ID,這一點也是相當方便的。

 

源地址:http://blog.csdn.net/zhoufoxcn/archive/2010/05/17/5599115.aspx#

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.