在服务器上运行的jquery和html元素

我有一个元素包含在用户控件(标题)中。 这个div包含里面的子div。 其中一个包括用户选项。 用户选项div()显示登录用户的用户名,以及与已登录用户相关的一些链接,例如注销,设置等。“user_options”div绝对位于“header”div中。

现在,在登录页面本身,我想隐藏这个div,因为用户被带到那里因为他/他没有登录。在这种情况下,我把一个runat =“server”属性放到“user_options”div和我进行.aspx页面的page_load事件检查以查看用户是否登录如下;

if check_user_loggedin() then user_options.attributes("style") = "display:none;" ' also tried this with user_options.visible = false and else user_options.attributes("style") = "display:block;" ' in this one, I even tried the whole positioning css eg display:block; positon:absolute; left:100px; etc... end if 

现在使用此代码,当我运行项目时,它可以正常工作,我不想显示div – 它成功隐藏。 但是在那些我需要显示div的页面中,它仍会显示在页面的最左上方,而其中的其他“div”元素的jquery click事件也不起作用。

我认为它与执行顺序或页面事件周期有关,但是你可以为此建议任何解决方法吗?

=========编辑=========================
这是CSS:

  #user_options { position:absolute; top:18px; right:10px; width:200px; color:#ffffff; text-align:right; } 

这是HTML:

  

这是用户控制中的代码:

 Private _displayUserOptions As Boolean Public Property displayUserOptions() As Boolean Get Return _displayUserOptions End Get Set(ByVal value As Boolean) _displayUserOptions = value End Set End Property Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If displayUserOptions Then user_options.Attributes("style") = "display:none;" Else user_options.Attributes("style") = "display:block;" End If End Sub 

这就是我在HTML页面中调用以显示用户控件的内容

  

在我们进入ASP.NET 4.0和ClientIdMode =“Static”之前,我建议使用唯一的类名来解决此问题。

 
....

因为那时你可以a)使用后面的代码访问user_options然后使用jQuery和CSS来访问.user_options而不是#user_options

您的问题可能源于嵌套命名容器。 当您的用户控件放在页面上并且div被赋予runat =“server”属性时,它可能会将div命名为ID =“ctrl00_user_options”。

作为替代方案,如果您使用成员资格提供程序框架,则可以使用loginname控件来控制是否显示用户的名称。 否则,你可以在你的标记中做这样的事情(假设有一个名为user的变量可供页面使用: