【问题标题】:Find the ID after compiling编译后找到ID
【发布时间】:2009-06-21 22:18:45
【问题描述】:

当你在 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 是什么?

可以使用哪些关键字来了解有关此现象的更多信息?

【问题讨论】:

  • 这太烦人了,我自己也遭受过这种情况。正如答案所指出的,您需要为此使用 ClientID。我所做的是在需要获取特定控件元素 ID 时使用 块。遗憾的是,它非常麻烦,而且几乎不是一个好的解决方案,但可能是唯一的解决方案。

标签: c# asp.net javascript


【解决方案1】:

您需要@987654321@ 属性。这包含在运行时生成的控件 id。您可以在后面的代码中发出一些 JavaScript,将控件的客户端 ID 设置为 JavaScript 变量,以便您可以引用它。

编辑:添加示例

以下将使用 ClientID 查找标签,然后更新其文本。

var mylabelID = ""; var label = document.getElementById(mylabelID); label.innerHTML += "改变"; 脚本> 正文>

【讨论】:

  • 可以举个例子吗?
【解决方案2】:

我相信您正在寻找ClientID 属性。

ClientID 值通常用于 以编程方式访问 HTML 为控件呈现的元素 客户端脚本。

您的另一个选择是将您的控件包装在一个 HTML 元素中,如下所示:

<span id="foo">
    <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label>
</span>

由于这个外部元素没有runat="server" 属性,它的id 在渲染时不会改变。这意味着您的 JavaScript 函数必须更改为从范围 foo 中提取内部元素,或者如果您使用像 jQuery 这样的 JavaScript 框架,您可以像这样拉回标签:

$("span#foo span");

【讨论】:

  • 可以举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 2019-01-10
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多