关于控件ID的问题

随意飘荡 2009-02-24 04:42:55
<select id="drpProvince" runat="server"></select>程序运行后查看源代码ID变为ctl03___drpProvince 如何使它不发生改变?谢谢
...全文
142 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑白-codelife 2009-02-24
  • 打赏
  • 举报
回复
用客户端控件! 用服务器控件会重新被解析,这个值具体和生成id attribute 方法相关,要修改的话要找到它, 很麻烦!
建意用客户端控件! 因为六楼说没有 客户端控件,所以我说下我所指的户端控件,就是浏览器可以真接解析的标记.
Terry717 2009-02-24
  • 打赏
  • 举报
回复
这里内部的机制生成的,只是生成HTML主内容而已,没必要关注太多这些东西

再说,这对我们的操作和处理也没什么影响,直接用它的id就行了
  • 打赏
  • 举报
回复
也许今天是这样一个组合方式,也许明天在.net3.0上又是另外一种组合计算方式 --> 也许今天是这样一个组合方式,也许明天在.net4.0上又是另外一种组合计算方式

实际上,从.net1.0变动到.net2.0就修改了一次计算ClientID的方式,一个分隔符修改了。
  • 打赏
  • 举报
回复
[Quote=引用楼主 violet_moon 的帖子:]
<select id="drpProvince" runat="server"> </select>程序运行后查看源代码ID变为ctl03___drpProvince 如何使它不发生改变?谢谢
[/Quote]

严格来说,根本没有什么“改变”动作。

当你写
    <select id="adfa" />
<adfaksda mm="play" />
<select id="Select1" runat="server" />
的时候,asp.net把前两行写入一个LiteralControl控件,第三行生成HtmlSelect控件;而如果你写
    <select id="adfa" />
<select id="Select1" runat="server" />
<adfaksda mm="play" />
则asp.net把第一行和第三行分别解析为LiteralControl控件,而中间第二行解析为HtmlSelect控件。也就是说,根本没有什么“客户端控件”这一说,asp.net把你随便写的字符串放入LiteralControl,原样输出到客户端,不管你在这个字符串中胡写什么内容都可以(尽管vs会帮你检查html语法,但是它并不限制你随便写html标签)。

当你说“id被改变了”的时候,一定是以为有什么客户端控件那一说。实际上并没有。所有的服务器端控件输出到html上的客户端id值都是变动的,也许今天是这样一个组合方式,也许明天在.net3.0上又是另外一种组合计算方式。总之,服务器端id跟客户端id没有关系,客户端id是你可以通过ClientID属性查询出来的,不要从服务器端id来自己随便推测。
cpp2017 2009-02-24
  • 打赏
  • 举报
回复
var id ="<%=drpProvince.ClientID%>";
time_is_life 2009-02-24
  • 打赏
  • 举报
回复
你在服务器端用drpProvince.ClientID是可以获得这个有前缀的ID的。所以变了也没有关系
anyqu 2009-02-24
  • 打赏
  • 举报
回复
服务器控件到现在还没有发现解析后不改的!客户端的应该不会改!
随意飘荡 2009-02-24
  • 打赏
  • 举报
回复
name属性和ID属性是一样的 同样有前缀 该如何解决?谢谢
time_is_life 2009-02-24
  • 打赏
  • 举报
回复
用name属性

62,049

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧