asp.net 控件问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:45:15
这个是运行后的源代码,为什么我的name为ctl00$ContentPlaceHolder1$beizhu,页有些网站则是自己可以定义的?
<textarea name="ctl00$ContentPlaceHolder1$beizhu" rows="2" cols="20" id="ctl00_ContentPlaceHolder1_beizhu" class="text" style="height:130px;width:450px;"></textarea>

RE:ctl00$ContentPlaceHolder1$beizhu
称作为服务器控件分层 ID 是防止出现 DHTML 页面元素 ID 重复的。

RE:
有些网站则是自己可以
除非他没有使用到 Web 控件或母版页.... 之类的东西,否则不可能不出现分层 ID 号。

描述:

如果你的页面,仅仅是简单的 Web 页面,那么分层 ID 就是你命名的 ID, 不会产生 $ 的分层符号。

如果你的页面有 Web 自定义控件或 Web 用户控件,那么你 Web 控件里面的服务器控件会生成和你命名 ID 不一致的分层 ID 号。

如果你使用了母版页的生成页,那么生成页里面的控件也会出现和 你命名 ID 不一致的分层 ID 号。

道理很简单:
譬如说你 Web 页面有一个 Username 名称的控件,而你 Web 控件里面也可以有 Username 名称的控件,为防止这两个控件最后在生成 HTML 页面出现相同的 ID 而使用分层 ID 的策略。
可以简单的理解为:分层 ID 相当于 C# 命名空间,客户端 HTML 元素模拟 C# 的命名空间。

PS:可以使用 UniqueID 属性获取服务器控件的分层 ID 号,这样就可以方便客户端 JS 脚本编程和实现 Reqeust 查询表单了(示例:string value = this.Request[控件.UniqueID ];)。