当你在asp.net中分配一些ID时,例如:
<asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label>
用于引用该对象的ID后面的代码是mylabel。
然而,在网站编译完并且正在运行HTML中的ID后,更改了一些更安全的内容
<asp:Label runat="server" ID="ct100_blahblah_what_mylabel" Text="some text"></asp:Label>
我不能(不知道如何)可靠地预测用javascript选择它会是什么。
有没有办法在任何特定时刻询问服务器该标签的ID是什么?
有哪些关键字可以用来了解有关此现象的更多信息?
答案 0 :(得分:3)
我相信你正在寻找ClientID
财产。
ClientID
值通常用于 以编程方式访问HTML 为控件呈现的元素 客户端脚本。
您的另一个选择是将控件包装在这样的HTML元素中:
<span id="foo">
<asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label>
</span>
由于此外部元素没有runat="server"
属性,因此在渲染时不会更改其id。这意味着你的JavaScript函数必须被改变以从span foo
中拉出一个内部元素,或者如果你使用像jQuery这样的JavaScript框架,你可以像这样拉回标签:
$("span#foo span");
答案 1 :(得分:3)
您需要ClientID
属性。这包含运行时控件的生成id。您可以在后面的代码中发出一些JavaScript,将控件的客户端ID设置为JavaScript变量,以便您可以引用它。
编辑:添加了示例
以下内容将使用ClientID找到标签,然后更新其文本。
<html> <body> <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label> <script language="javascript"> var mylabelID = "<%= mylabel.ClientID %>"; var label = document.getElementById(mylabelID); label.innerHTML += " changed"; </script> </body> </html>