【问题标题】:Refer to an HTML control created in code-behind using its html identifier使用其 html 标识符引用在代码隐藏中创建的 HTML 控件
【发布时间】:2015-06-16 14:51:02
【问题描述】:

1) 我在代码隐藏中创建了一个面板,并将其 ID 指定为“Panel123”。面板稍后在 html 页面上呈现时接收其 html ID。 html 中的此 ID 看起来像“ctl00_ctl00_bla_bla_bla_Panel123”。

2) 我在代码隐藏中创建并注册了一个 javascript 块,它通过其 ID 引用面板。因此,在代码隐藏中,我需要检索面板的未来 html ID 并将此 ID 嵌入到脚本中。

我尝试过 ClientID、UniqueID、ID,但所有这些服务器端属性只给出了面板 id 的结尾部分,而不是 bla_bla_bla 的全部内容。

我也尝试将字符串“”放入脚本文本中,但随后在 html 中呈现如下(我故意添加空格以防止替换符号):' < % =Panel123.ClientID%>'。因此,如您所见,脚本无法将其识别为有效的 html ID。

如何在代码隐藏中获取整个 html id?

代码隐藏

Panel123 = new Panel();
Panel123.ID = "Panel123";

...

LinkButton123.OnClientClick = "function123(this,'<%=Panel123.ClientID%>'); return false;";

【问题讨论】:

    标签: html asp.net controls code-behind identifier


    【解决方案1】:

    您不能像这样从在服务器上创建的字符串中使用内联语法。相反,只需将其连接起来。

    LinkButton123.OnClientClick = "function123(this,'" + Panel123.ClientID + "'); return false;";
    

    要么这样,要么将面板的ClientIDMode 更改为Static。那么 ID 将永远只是 Panel123

    Panel123 = new Panel();
    Panel123.ID = "Panel123";
    Panel123.ClientIDMode = "Static";
    LinkButton123.OnClientClick = "function123(this,'Panel123'); return false;";
    

    【讨论】:

    • @Vladimir 更新了答案。
    • @Vladimir 您使用的是什么版本的 .NET?
    • @Vladimir 这是一个新项目吗?还是现有的?您至少应该使用 .NET 4 和 Visual Studio 2013。无论如何,ClientIDMode 直到 .NET 4 才被添加。
    • @Vladimir 将您的面板添加到其他东西的Controls 集合中,然后使用ClientID 属性。或者做简单的事情并升级到 .NET 4 和 VS 2013。
    【解决方案2】:

    好的,我自己找到了解决方案。

    我没有检索 html 生成的 ID,而是使用以下结构将 id 添加到控件:Panel123.Attributes.Add("id", "Panel123")。

    它直接设置纯 html 标识符,没有任何其他服务器生成的“bla_bla_bla”东西。

    【讨论】:

    • 这样你会得到两个id 属性吗?
    • 我用这种新方法替换了 Panel123.ID="Panel123"。所以我只指定一个id。
    • 我不是在谈论您指定的内容...我是在谈论生成的 HTML。你最终有两个id 属性吗?
    • 当您使用微软提供的绝对正确的方式指定您的 ID 时,我不认为 asp.net 添加自己生成的 ID 是愚蠢的。 html中只有一个id。
    • 别指望它。我之前见过它添加了多个class 属性。当您使用 .NET 3.5 时,您使用的是非常旧的代码,应该强烈考虑升级。
    猜你喜欢
    • 2013-03-18
    • 2014-11-18
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多