JavaScript 运行时错误 : Control ClientID is undefined

标签 javascript asp.net

我有一个 .ascx ComboBoxControl 定义如下。我们称之为Control1

<%@ Control Language="C#" AutoEventWireup="true"
    Inherits="ComboBoxControl" Codebehind="ComboBoxControl.ascx.cs" %>
<table border="0" cellpadding="0" cellspacing="0" style="border: 0px solid red">
    <tr>
        <td style="width: 60px; vertical-align: top">
            <asp:TextBox ID="txtSelectedMLValues" class="dropdownbox" runat="server" ReadOnly="true" Style="width: 60px;" EnableViewState="true" Font-Size="11px" />
        </td>
        <td style="width:14px;" class="imgalign" align="left">
            <img alt="" id="imgShowHide" runat="server" src="~/Images/drop.gif" height="20" />
        </td>
    </tr>
    <tr>
        <td class="DropDownLook"  style="vertical-align: top" colspan="2">
            <div style="vertical-align: top;">
                <div id="divCheckBoxListClose" runat="server" class="DivClose" style="font-weight:700;color:Black; font-size:11;padding-left:6px;">
                    <label id="lblClose" runat="server" class="LabelClose Green" >
                        Click Here To Close <span class="closecross" style="vertical-align:text-bottom; margin-bottom:-1px; " >X</span></label>
                </div>
                <div id="divCheckBoxList" runat="server" class="DivCheckBoxList">                    
                <div>
                    <asp:CheckBox ID="chkAll" runat="server" CssClass="CheckBoxList leftPaddingforcombo" Text="ALL" ToolTip="ALL"/>
                    </div>
                   <asp:CheckBoxList ID="chkMultipleValues"  runat="server" CssClass="CheckBoxList" 
                        Width="500px"  >
                    </asp:CheckBoxList>
                </div>
            </div>
        </td>
    </tr>
</table>

在 .cs 文件后面的控件代码中,我有以下代码用于设置 ComboBoxControl 的 onClick 事件。

 protected void Page_Load(object sender, EventArgs e)
{
       if (!IsPostBack)
        {
            txtSelectedMLValues.Attributes.Add("onclick", "ShowMList(" + divCheckBoxList.ClientID + "," + divCheckBoxListClose.ClientID + ")");
            chkMultipleValues.Attributes.Add("onblur", "HideMList(" + divCheckBoxList.ClientID + "," + divCheckBoxListClose.ClientID + ")");
            chkMultipleValues.Attributes.Add("onclick", "FindSelectedItems(this," + txtSelectedMLValues.ClientID + "," + chkAll.ClientID + ");");         
        }
}

我在另一个 .ascx 控件(我们称之为 Control2)中使用上述 ComboBoxControl (Control1),如下所示。

<td width="15px" style="text-align: left;display: inline-block;">
 <uc2:ComboBoxControl ID="ComboBoxControlNames" runat="server" />
</td>

我遇到的问题是,当我选择 ComboBoxControl 中的复选框时,出现以下错误“ctl00_ContentPlaceHolderMain_ctl00_ComboBoxControlNames_txtSelectedMLValues' 未定义

请注意,“ContentPlaceHolderMain”是我的 MasterPage 中的 asp:ContentPlaceHolder。

当我查看页面源代码时,ClientID“ctl00_ContentPlaceHolderMain_ctl00_ComboBoxControlNames_txtSelectedMLValues”存在,但 IE 11 抛出错误,表明它未定义。

在 Chrome 中,不会出现该错误。我正在努力解决如何在 IE 11 中停止该错误。

最佳答案

代码将呈现为

<input onclick="ShowMList( theOneId, theOtherId)" />

如您所见,它们将被视为变量而不是字符串。您需要将它们用引号引起来。

txtSelectedMLValues.Attributes.Add("onclick", "ShowMList('" + divCheckBoxList.ClientID + "','" + divCheckBoxListClose.ClientID + "')");

现在为其他人做这件事

关于JavaScript 运行时错误 : Control ClientID is undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34656539/

相关文章:

c# - 从 IIS .Net 应用程序访问网络共享

javascript - 嵌套的 JavaScript 循环如何自然中断

javascript - 如何从 Ember JS 的子路由访问父 Controller ?

javascript - 使用 lodash 搜索并删除集合中数组中的空值

javascript - 从实例变量名中找出实例变量名

c# - 如何转换 ASP.NET session 以取回我的列表?

javascript - HTML 中的 z-index 和 onclick

css - 对齐复选框列表中的复选框

c# - C#获取上一页URL的方法

javascript - 如何使用局部 View 展开/折叠 html 表格?