通过代码理解Asp.net4中的几种ClientIDMode设置.

简介:

以前我们可以通过ClientIDJavaScript脚本中服务器端控件.比如:

document.getElementById("<%=控件.ClientID %>");

这种方式不方便,而且如果在有数据绑定的控件中嵌套着子控件,则访问更不太方便了.

现在,Asp.Net4,对于控件增加了一种新的属性,名为ClientIDMode.通过设置ClientIDMode,我们可以指定各个服务器控件如何生成ClientID,以便我们在客户端脚本中方便使用.具体如下:

1.         Inherit

 控件继承其父控件的 ClientIDMode 设置。这个就没什么多说的了.

 

2.         AutoID

 ClientID 值是通过串联每个父命名容器的 ID 值生成的,这些父命名容器都具有控件的 ID 值。 在呈现控件的多个实例的数据绑定方案中,将在控件的 ID 值的前面插入递增的值。 各部分之间以下划线字符 (_) 分隔。  ASP.NET 4 之前的 ASP.NET 版本中使用此算法。

代码如下所示:

<asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1"runat="server">

    <div>

        <asp:Button ID="Button1123" runat="server" Text="Button"OnClientClick="showClientId();"

            ClientIDMode="AutoID" />

    </div>

    <script type="text/javascript">

        function showClientId() {

            var d = document.getElementById("<%=Button1123.ClientID%>");

            alert(d.id);

            return false;

        }

    </script>

</asp:Content>

运行结果如下图所示:

 

 

 

3.         Static

 ClientID 值设置为 ID 属性的值。 如果控件是命名容器,则该控件将用作其所包含的任何控件的命名容器的顶层。

代码如下所示:

<asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1"runat="server">

    <div>

        <asp:Button ID="Button1123" runat="server" Text="Button"OnClientClick="showClientId();"

            ClientIDMode="Static" />

    </div>

    <script type="text/javascript">

        function showClientId() {

            var d = document.getElementById("Button1123");

            alert(d.id);

            return false;

        }

    </script>

</asp:Content>

这里,我们就可以直接使用var d = document.getElementById("Button1123");这样的代码访问服务器端控件了运行结果如下图所示:

 

 

4.         Predictable

 对于数据绑定控件中的控件使用此算法。 ClientID 值是通过串联每个父命名容器的 ClientID 值生成的,这些父命名容器都具有控件的ID 值。 如果控件是生成多个行的数据绑定控件,则在末尾添加 ClientIDRowSuffix 属性中指定的数据字段的值。  如果 ClientIDRowSuffix 属性为空白,则在末尾添加顺序号,而非数据字段值。 这个顺序号是从0开始并以1递增的各部分之间以下划线字符(_) 分隔。

页面代码如下:

<asp:ListView ID="ListView1" runat="server" ClientIDMode="Predictable"ClientIDRowSuffix="ID">

            <ItemTemplate>

                <tr>

                    <td>

                        <%# Eval("ID")%>

                    </td>

                    <td>

                        <%# Eval("Name"%>

                    </td>

                    <td align="right">

                        <asp:Label ID="Label1" runat="server"Text='<%# Eval("RegisteTime") %>' />

                    </td>

                </tr>

            </ItemTemplate>

        </asp:ListView>

运行后,查看页面源文件如下:

 

如上示例, Predictable 主要是用在有数据绑定控件中的子控件中,这样可以按照自己的意愿生成相应的id,上例中,我们指定了使用数据源中的ID字段做为后缀来生成相应的id.还可以通过分号分割设置多个字段作为ID.

现在我们去掉ClientIDRowSuffix="ID"这段代码,再来看看执行之后的页面源代码.

 

我们可以发现,自动为添加了从0开始,1递增的后缀序号.

使用此方式,我们可以预见子控件id规律,这样在某些需要顺序或循环通过客户端脚本(JavaScript脚本)访问这些子控件时,就很方便了.

通过以上几种不同的设置,我们可以更自由的控制服务器端控件生成的id,以使得我们在客户端脚本(JavaScript脚本)中方便的调用.尤其在现在JqueryJS库普遍使用的情况下.



    本文转自风车车  博客园博客,原文链接:http://www.cnblogs.com/xray2005/archive/2011/07/05/2097881.html,如需转载请自行联系原作者



相关文章
|
监控 物联网 API
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
MQTT广泛应用于工业物联网、智能家居、各类智能制造或各类自动化场景等。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信、机器与物联网通信等。好了,科普的废话不多说,下面直接通过.NET环境来实现一套MQTT通信demo,实现服务端与客户端的双边消息发布与订阅的功能和演示。
967 0
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
|
5月前
云效静态代码检测可以检测.net吗?
云效静态代码检测可以检测.net吗?
30 1
|
8月前
|
算法 编译器 API
|
12月前
|
开发框架 .NET 数据安全/隐私保护
ASP.NET验证控件合集 含代码演示
ASP.NET验证控件合集 含代码演示
|
12月前
|
开发框架 .NET Apache
301重定向代码合集(iis,asp,php,asp.net,apache)
301重定向代码合集(iis,asp,php,asp.net,apache)
275 0
|
12月前
|
数据挖掘 Python
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
86 0
|
存储 开发框架 前端开发
ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
本文介绍 ASP.NET 中内置的验证功能,并介绍如何自定义验证返回信息,最后以统一社会信用代码为例,实现自定义的数据验证。
188 0
ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
|
安全
.Net MF V4.0开源前的代码整理
已经有好长一段时间没有更新博客了,一是去美国总部和台湾出差用了不少时间,二是做.Net MF代码整理又花了近一个月的时间。不过令人欣慰的是,目前.Net MF V4.0的相关代码整理已经告一段落,就等着下一步的开源了
628 0
.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能
原文:.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能         接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证。
1201 0
|
监控 Shell
.NET自动安装zabbix客户端(代码)
using System; using System.Collections.Generic; using System.Text; using System.
899 0