在服务器上运行的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的变量可供页面使用: