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

Label won't show when label hidden via page load

本文关键字:标签 显示 隐藏 加载      更新时间:2023-09-26

期望的效果是在页面加载时标签不显示,但是当用户单击复选框时标签显示出来。这个小代码示例只是说明这个问题的一个示例。当标签的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 />

我们如何在Page_Load中隐藏标签,这样我们就不会从Internet Explorer中获得对象引用错误?

谢谢…

如果设置为false,则Visible属性不会呈现HTML,这就是为什么您会获得空引用(换句话说,ASP。. NET的Visibledisplay CSS属性无关-它实际上切换元素是否在HTML代码中呈现。相反,在页面加载时指定一个定义display: none的CSS类,然后在点击时使用javascript

删除该类。