通过页面加载隐藏标签时不会显示标签

use*_*263 1 javascript asp.net

期望的效果是在页面加载时标签不显示,但是当用户单击复选框时,标签显示.这个小代码示例只是一个示例来说明问题.当标签的Visible属性设置为false时,代码将始终从javascript返回对象引用异常.如果该行被注释掉,它将正确执行而没有对象引用异常,但标签应该在页面加载时隐藏.此应用程序使用母版页,这就是将ClientID传递给javascript Toggle函数的原因.

protected void Page_Load(object sender, EventArgs e)
{
    this.chkSelect.Attributes.Add("onClick", "Toggle('" + this.lblAdd.ClientID + "', '" + this.chkSelect.ClientID + "')");
    this.lblAdd.Visible = false;
}

<script type="text/javascript">
    function Toggle(lblAdd, chk) {
        var ctrlAdd = document.getElementById(lblAdd);
        var ctrlChk = document.getElementById(chk);

        if (ctrlChk.checked == true) {
            ctrlAdd.style.display = 'inline';
        }
        else {
            ctrlAdd.style.display = 'none';
        }
    }
</script>


    <asp:Label ID="lblAdd" runat="server" Text="Add" Font-Size="8pt" ForeColor="Blue"> </asp:Label>
    <asp:CheckBox ID="chkSelect" runat="server" Text="Check Box1" /><br />
Run Code Online (Sandbox Code Playgroud)

我们如何在Page_Load中隐藏该标签,以便我们不会从Internet Explorer中获取对象引用错误?

谢谢...

Tim*_*NET 5

Visible,如果设置为false属性不会呈现HTML,这就是为什么你会得到一个空引用(换句话说,ASP.NET的Visible是无关的displayCSS属性-它实际上切换元素是否在HTML代码或不呈现).而是在页面加载上分配一个定义的CSS类display: none,然后使用javascript删除该类