解析ASPX中自动生成的select元素正在做什么?

时间:2012-12-17 20:04:45

标签: c# asp.net html

我正在尝试理解以下select元素:

   <select name="ctl00$ctl00$ContentPlaceHolder1$ContentItems$ddlResponseRange id="ctl00_ctl00_ContentPlaceHolder1_ContentItems_ddlResponseRange" class="Content" style="width:11%;">

这是所有自动生成的代码,正确(即像ct100)? $符号在做什么 - 它们是用于表达式绑定吗?仅供参考,这里的ddl表示“下拉列表”。

2 个答案:

答案 0 :(得分:1)

这只是一个大字符串。从HTML的角度来看,他们所有有效的字符都构成了属性的价值,因此从这个意义上来说,它是正确的&#34;。

至于尝试自己使用id / name值,或者依赖于基于该结构的名称/ id的假设,我建议避免这种情况。我发现最好假装ASP会生成一个我无法使用的随机名称/ ID,尽管实际上它只是从该项目到根目录的所有元素的ID。如果你发现自己写出了这样的ID值,你可能会做错事。

至于为什么它遵循惯例而不是仅实际分配随机ID /名称(或根本没有),以便它可以重新使用它来将HTML响应与内存中项目的结构相关联。确保每页的ID是唯一的也很重要,通过使用这种结构,这意味着APS ID值只需要在兄弟元素中是唯一的。

答案 1 :(得分:1)

$_用作控件的服务器端ID ddlResponseRange与其<asp:content>类型的父控件的服务器端ID之间的分隔符。 3}}(通常是<form runat="server">个控件)。

INamingContainer内的页面上的控件本身没有这样的属性。但是当您开始使用母版页或数据绑定控件时,您正在使用实现{{1}}的控件。此接口类似于标记,它指示ASP.NET运行时开始将控件的服务器端ID添加到其子控件的ID。这对于保证生成的HTML中的唯一名称和ID属性是必要的。

最终,此基础结构支持ASP.NET Web Forms回发机制和客户端脚本。

如果您使用的是ASP.NET 4.0或更高版本,则实际上可以影响ASP.NET生成客户端ID的方式。有关配置客户端ID的不同方法,请参阅INamingContainer