开发学院WEB开发ASP.NET ASP.NET4.0中客户端ID的生成 阅读

ASP.NET4.0中客户端ID的生成

 2010-10-21 08:26:47 来源:WEB开发网   
核心提示:我们如何控制ASP.NET 4.0中ASP.NET服务器控件客户端ID的生成,早些时候,ASP.NET4.0中客户端ID的生成,这个客户端ID对我来说是另外一件神秘的事情,但是后来我发现了.NET引擎生成服务器端控件ID的算法, AutoID:这个属性的功能和之前.NET版本生成客户端ID的功能相同,如果你不想

我们如何控制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服务器控件的例子:
Brij_634099931410072031_normal35aspx.jpg

昨天 21:58 上传
下载附件 (44.59 KB)


      从上面的图片我们可以看到,我的Label和TextBox是在一个contentplaceholder里面,接着看一下客户端ID:
Brij_634099931410863047_normalpage3.5.jpg

昨天 22:01 上传
下载附件 (34.14 KB)



      现在这儿的客户端ID是ctl00_ContentPlaceHolder1_myTextBox。如果我们从ctl00开始一个一个的数(以下划线为分隔符),下一个是contentplaceholder的ID,再下一个是TextBox的ID。

      值得注意的一点是,当你移动控件到其它位置时,客户端ID会自动改变。

      虽然我们知道页面会生成唯一的ID,但是你必须不让任何控件超出页面的控制范围。.NET引擎会根据她的算法为你自动生成客户端ID。

      现在,让我们来谈谈一些数据控件,如GridView、ListView、DropDownList等。用这些控件做什么?我们只给控件绑定数据源。在运 行时,基于此数据,控件行被自动生成。关于这儿的客户端ID呢?客户端ID如我们已经讨论的方法一样,自动生成,并且前缀带有行号。看一看这个示例。

      我的aspx中的GridView代码。这儿我显示了ID、BookName和Price。
Brij_634099944294876719_dataaspx35.jpg

昨天 22:39 上传
下载附件 (49.9 KB)


      上面例子中,我使用了一个GridView。在GridView中的不同模板列中有三个Label。GridView在contentplaceholder中。看一下客户端ID:
Brij_634099931409554453_datapage35.jpg

昨天 22:42 上传
下载附件 (58.37 KB)



      你可以看到像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生成的功能,就指定这个值。

1 2  下一页

Tags:ASP.NET 客户端 ID 生成

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读