Asp.net 隐藏服务器控件

Asp.net 隐藏服务器控件,asp.net,Asp.net,如何从aspx.cs文件中隐藏位于aspx文件中的控件 我有一个文本框和一个按钮,我的想法是当我按下按钮时,这两个控件都会消失,出现一个动态控件。 基本上,一种使其不可见的方法是在按钮的点击事件中放置一些东西,或者有其他方法吗 或者有没有更好的方法来解决这个问题,而不必让控制实际上“不可见” 谢谢。编辑 好的,下面的css方法将意味着您的控件仍然呈现,但浏览器将使其不可见,但仍将在标记中。如果您根本不想渲染它,请将visible设置为false,正如其他人所提到的 这是一种有很多方法可以剥这只猫

如何从aspx.cs文件中隐藏位于aspx文件中的控件

我有一个文本框和一个按钮,我的想法是当我按下按钮时,这两个控件都会消失,出现一个动态控件。 基本上,一种使其不可见的方法是在按钮的点击事件中放置一些东西,或者有其他方法吗

或者有没有更好的方法来解决这个问题,而不必让控制实际上“不可见”

谢谢。

编辑

好的,下面的css方法将意味着您的控件仍然呈现,但浏览器将使其不可见,但仍将在标记中。如果您根本不想渲染它,请将visible设置为false,正如其他人所提到的

这是一种有很多方法可以剥这只猫的皮的方法,这取决于你想要达到的目标:)

原创帖子

您可以将其cssClass更改为包含display:none

<style type="text/css">
.ShowMyControl
{
  display:block;
}

.HideMyControl
{
  display:none;
}
</style>

不过,您可能要做的是将控件放置在asp:Panel控件中,然后翻转面板的cssClass,而不是每个控件上的cssClass。那也行


这是一种基于您似乎正在使用的服务器端模型的方法,但是,您可能希望看看如何利用AJAX调用和JavaScript在客户端进行动态显示和隐藏。但这可能不合适-这取决于您的设计模式。在按钮单击事件的事件处理程序中,将所需控件可见属性设置为false。您还可以通过jquery完成此操作,而无需回发,即OnClientClick。

您可以订阅服务器端
单击按钮的
事件,并将用户控件的
可见
属性设置为

protected void cmdHide_Click(object sender, EventArgs e)
{
    myCustomControl.Visible = false;
}
但是,这将导致在自定义控件中根本不呈现。此外,由于您使用的是服务器端事件,页面将被重新加载

如果不希望重新加载页面,则可以使用Javascript将其隐藏:

标记:

<asp:Button ID="cmdHide" Text="Hide" runat="server" />
<asp:Panel ID="myPanel" runat="server">
    <cust:MyCustomControl ... />
</asp:Panel>

--Pavel

控件必须在加载时显示,因此我必须为此控件分配2个ccs类?这部分有点不清楚。是的,很抱歉,您需要将.ShowMyControl分配给要显示的原始控件,然后在按钮的单击事件中将其更改为.HideMyControl
protected void cmdHide_Click(object sender, EventArgs e)
{
    myCustomControl.Visible = false;
}
<asp:Button ID="cmdHide" Text="Hide" runat="server" />
<asp:Panel ID="myPanel" runat="server">
    <cust:MyCustomControl ... />
</asp:Panel>
cmdHide.OnClientClick = string.Format("document.getElementById('{0}').style.display = 'none'; return false;", myPanel.ClientID);