确定ASP.NET客户端ID

时间:2009-03-09 10:41:39

标签: asp.net javascript

这个问题与Forcing client ids in ASP.NET类似,但不完全相同。

ASP.NET根据自己的内部机制生成clientids。我想在后台运行xmlhttprequest查询来进行更新,并有选择地重新加载一些控件。我的计划是运行查询并在后台重新生成页面,但只选择性地渲染我想要更新的控件 - 然后只需用新的控件替换这些控件的html。

我的问题是,我可以期待clientid是相同的(因为我正在生成相同的页面),如果我想通过更新asp.net生成的html,还有什么我需要注意的事情吗? JavaScript的?

3 个答案:

答案 0 :(得分:1)

ASP.NET根据页面层次结构中控件的位置生成控件名称和ID。

如果在连续页面重新生成之间不会更改此层次结构,则可以确保生成的控件ID不会有所不同。另一个值得注意的一点是,当您使用Fragment缓存时,控件ID在每个请求上都有随机名称。

另一个想法是将ClientID(可用服务器端)存储到隐藏字段中,然后通过脚本检索此信息。

答案 1 :(得分:1)

虽然系统是可预测的,但建立对这些名称的依赖是不明智的,因为它们 生成它们并且它有能力创建一个困难的维护负担和一些微妙的错误的可能性当您的网页发生变化时,将会

这通常是使用asp.net的问题的一部分,我建议你找到一种更可靠的方法来定位节点,比如定位非asp包装器节点,然后查看子节点,或者定位类名。

答案 2 :(得分:1)

我使用以下技巧获取ASP.NET控件的ClientID:

<script type="text/javascript">
//textBox will contain the DOM element rendered for the <asp:TextBox /> control
var textBox = document.getElementById("<%= nameTextBox.ClientID %>");
</script>
<asp:TextBox runat="server" ID="TextBox1" />