我正在使用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>
答案 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(); 这对我有用。