【问题标题】:Calling ClientID from aspx从 aspx 调用 ClientID
【发布时间】:2011-01-20 16:04:22
【问题描述】:

"")" />

这不起作用,错误说: 解析器错误消息:服务器标签不能包含 构造。

有什么办法可以解决这个问题吗? 谢谢;)

【问题讨论】:

  • 为什么你有 runat="server" 在输入?你不应该使用 asp 控件吗?
  • 这是因为我需要在代码行为中从中获取值,而 Asp:Checkbox 让我与来自 ajax 的更新面板发生冲突。

标签: c# asp.net clientid


【解决方案1】:

你可以像这样使用 jQuery 来做到这一点:

var control = '#<%= chbSAveState.ClientID%>';
$(control).change(function(){
    SaveState($(this).id);
});

【讨论】:

  • 为什么要用 jQuery 来做这么简单的事情?
【解决方案2】:

您调用的是 JS 事件 (onchange),而不是服务器事件,因此只需传入 this.id

<input type="checkbox" id="chbSaveState" runat="server" tabindex="3"  
onchange="SaveState(this.id)" /> 

需要明确的是,this.id&lt;%=chbSaveState.ClientID%&gt; 在这种情况下将返回相同的值。由于您在 chbSaveState 的事件上调用它,因此您可以在此处使用易于访问的 JS 属性,而不是 &lt;%=chbSaveState.ClientID%&gt;,这需要服务器返回服务器为该控件生成的 id。

【讨论】:

    【解决方案3】:

    我对服务器端控件没有太多经验,但也许:

    <input type="checkbox" id="chbSaveState" runat="server" tabindex="3" 
    onchange="SaveState(chbSaveState.ClientID)" />
    

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多