ASP.NET4.0中客户端ID的生成
2010-10-21 08:26:47 来源:WEB开发网我们如何控制ASP.NET 4.0中ASP.NET服务器控件客户端ID的生成。早些时候,这个客户端ID对我来说是另外一件神秘的事情,但是后来我发现了.NET引擎生成服务器端控件ID的算法。
环境:
Visual Studio 2010
为什么是客户端ID:
客户端ID经常是个问题,特别是现在,新时代的应用程序中,我们更偏向于丰富互联网应用程序的客户端编程。在过去的几年里,已经形成像JQuery、JSON、DOJO等创建比较丰富的UI的许多技术和编程方法。
在DOM中,要访问的控件的客户端ID扮演者重要的角色。因此微软也通过提供能够确保更简单和更少错误的RIA开发的控制客户端ID生成的功能,试图让我们的编程生活更简单。
之前版本的客户端ID:
让我讨论一下,早期版本中客户端ID是如何生成的。
首先,我从标准控件TextBox或Label开始说起。这儿生成的客户端ID,前缀以 用下划线分割的 自上而下的所有的命名容器为前缀。这确实是一个在客户端生成唯一ID的好主意。但是正如我讨论的,客户端ID是新时期应用程序开发的重要组成部分。看一下 一个简单的TextBox服务器控件的例子:
从上面的图片我们可以看到,我的Label和TextBox是在一个contentplaceholder里面,接着看一下客户端ID:
现在这儿的客户端ID是ctl00_ContentPlaceHolder1_myTextBox。如果我们从ctl00开始一个一个的数(以下划线为分隔符),下一个是contentplaceholder的ID,再下一个是TextBox的ID。
值得注意的一点是,当你移动控件到其它位置时,客户端ID会自动改变。
虽然我们知道页面会生成唯一的ID,但是你必须不让任何控件超出页面的控制范围。.NET引擎会根据她的算法为你自动生成客户端ID。
现在,让我们来谈谈一些数据控件,如GridView、ListView、DropDownList等。用这些控件做什么?我们只给控件绑定数据源。在运 行时,基于此数据,控件行被自动生成。关于这儿的客户端ID呢?客户端ID如我们已经讨论的方法一样,自动生成,并且前缀带有行号。看一看这个示例。
我的aspx中的GridView代码。这儿我显示了ID、BookName和Price。
上面例子中,我使用了一个GridView。在GridView中的不同模板列中有三个Label。GridView在contentplaceholder中。看一下客户端ID:
你可以看到像ctl00_ContentPlaceHolder1_gridviewBooks_ctl02_lblID这样的ID,由.NET引擎按序列生成前缀,后面加Label的ID。
这种ID非常不易用。
随着新时期WEB开发的发展,在WEB开发中,当你在客户端做大量工作的时候,客户端ID成为重要组成部分。
ASP.NET 4.0中控件的客户端ID的生成
ASP.NET 4.0中提供了有效地方法控制客户端ID的生成。ASP.NET 4.0中提供一个新的属性ClientIDMode用于处理控件客户端ID的生成,这个属性使得我们可以自定义如何生成控件的客户端 ID,ClientIDMode提供四个选项:
* AutoID
* Static
* Predictable
* Inherit
我们一个一个的来讨论。
AutoID:这个属性的功能和之前.NET版本生成客户端ID的功能相同。如果你不想改变之前版本的客户端ID生成的功能,就指定这个值。
更多精彩
赞助商链接