使用ASP.NET隐藏HTML Div

时间:2017-09-27 19:12:31

标签: c# html asp.net

我正在使用ASP.NET作为网页,以便进行一些涉及查找用户组织信息的服务器调用。基于该信息,我们需要隐藏或显示div。在标题中我有一个绝对运行的C#函数。我尝试了以下几行来隐藏div。

divID.Style.Add("display","none");

divID.Visible = false;

在正文中,我目前正在使用一个asp:Panel,它在服务器上运行并包含id“divID”。无论我做什么,我都无法隐藏div(无需手动设置样式)。我尝试在身体前后放置脚本,但没有什么区别。任何有关最佳方法的建议都将受到赞赏。

编辑:

这是C#启动代码。

<script runat="server" language="C#">
  void getUserInfo(Object sender, EventArgs ev){

其余的C#代码无关紧要,但上面显示的相关行肯定在运行。

HTML部分看起来像这样。

<asp:Panel runat="server" id="divID" style="width:200px; height:130px; ">
   <div style="text-align:center">Test Data</div>
</asp:Panel>

3 个答案:

答案 0 :(得分:2)

C#代码总是从服务器端编译和运行,因此除非您使用回发或回调,否则不会影响页面呈现状态。如果要在客户端更改控件的可见状态,则需要在客户端使用Javascript(可能通过单击按钮触发)来显示和隐藏控件。

例如,请查看以下链接中的解决方案。 Html here

<script type="text/javascript">
    function ToggleDiv(Flag) {
        if (Flag == "first") {
            document.getElementById('dvFirstDiv').style.display = 'block';
            document.getElementById('dvSecondDiv').style.display = 'none';
        }
        else {
            document.getElementById('dvFirstDiv').style.display = 'none';
            document.getElementById('dvSecondDiv').style.display = 'block';
        }
    }
</script>
<asp:Button ID="btn" runat="server" Text="Show First Div"
    OnClientClick="ToggleDiv('first');return false;" />

<asp:Button ID="Button1" runat="server" Text="Show Second Div"
OnClientClick="ToggleDiv('second');return false;" />
<br />
<div id="dvFirstDiv" style="display: none;">
    First Div
</div>
<div id="dvSecondDiv" style="display: none;">
    Second Div
</div>

答案 1 :(得分:0)

  

在标题中我有一个肯定运行的C#函数。

如果您正在谈论HTML页面标题 - 不,它肯定没有运行。 C#代码仅在服务器端执行。

根据你的帖子,我假设我们在这里谈论WebForms,你的aspx文件中有一个脚本块。虽然这很好,但我建议将服务器端代码放入code behind文件中。

所以你需要做的就是为page life周期的PreRender阶段添加一个处理程序,并将你的逻辑显示/隐藏在那里。

public void Page_Prerender(object sender, EventArgs e)
{
    divID.Visible = false;
    ' OR
    'divID.Style.Add("display","none");
}

请注意,设置WebForms控件的Visible property会将控件从呈现中移除到页面,而设置display: none会将其呈现为HTML,但不会显示在页面上。

答案 2 :(得分:0)

尝试回溯代码:divID.Controls.clear(); 这对我有用。