C# 删除asp.net中禁用控件后的空白

C# 删除asp.net中禁用控件后的空白,c#,asp.net,C#,Asp.net,我有一个小页面,它看起来如下: <asp:Panel ID="panel" runat="server"> <asp:Button ID="button" runat="server"/> <br /> </asp:Panel> 某个标题 <asp:Panel ID="panel" runat="server"> <asp:Button ID="button" runat="server"/>

我有一个小页面,它看起来如下:

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
某个标题

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
仅针对登录用户使用文本标签

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
超链接

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
注销按钮

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
下面是隐藏的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.Name == "")
    {
        Label1.Visible = false;
        Controls.Remove(Label1);
    }
    else
    {
        Label1.Visible = true;
    }
}
<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
问题是:当非登录用户加载页面时,标签不会显示。但是如何移动超链接和注销按钮,从而隐藏标签不可见的地方的空白

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>

谢谢

您必须使用css显示:此处无

您必须创建一个身份验证面板这是一个asp:Panel扩展,它将使您能够控制“登录和未登录的用户而不会感到头痛”

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
例如:

public class AuthenticatedPanel : Panel
{
        public string Action { get; set; }

        public AuthenticatedPanel()
        {
            this.Load += new EventHandler(AuthenticatedPanel_Load);
        }

        void AuthenticatedPanel_Load(object sender, EventArgs e)
        {
             //your logic to check wether is user is legit or not 
             // and then 
             this.Visible = false;  
        }
 }
<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>
//然后使用

<asp:AuthenticatedPanel ID="pnl" runat="server">
  your content here
</asp:AuthenticatedPanel>
<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>

你的内容在这里

总之,根据以上信息和一些研究,以下是对我有效的方法。使用codebehind中的button.Visible=false删除空白,但“br”标记仍然存在,因此将它们包装在各个面板中并隐藏面板,而不是按钮,即panel.Visible=false,它将删除所有空白。

以下是一个示例,在.aspx页面上,创建一个包含控件的面板(注意“br”)标签(在其内部):

<asp:Panel ID="panel" runat="server">
    <asp:Button ID="button" runat="server"/>
    <br />
</asp:Panel>

标签1.样式。添加(“显示”、“无”);好的……这行不通。我没有注意到您实际上正在从控件中删除标签。它的效果与Label1.visible=false相同;标签是隐藏的,但它的位置是空白。我删除了行控件。删除(标签1);看起来是这样