从其他.aspx页面访问Site Master的公共属性

时间:2011-12-06 14:19:41

标签: asp.net vb.net

在我的Site.Master.vb文件中,我有一个自定义User对象:

Public Class Site
    Inherits System.Web.UI.MasterPage

    Public Property u as User

    Protected Sub Page_Load(ByVal sender as Object, ByVal e as System.EventArgs) Handles Me.Load
        u = New User

        u.loggedIn = True 'Just as an example
End Class

现在,在其中一个内容页面中,我希望能够看到用户是否已登录。我想如果在Site Master中声明了对象u,我可以在页面中使用它来自Site Master。例如,我想这样做:

...
<% If u.loggedIn Then %>
    <!-- display some HTML button here, ONLY if the user is logged in -->
<% Else %>
    <!-- display something else, if the user is logged out -->
 <% End If %>

是否有其他方法可以实现这一目标?

3 个答案:

答案 0 :(得分:1)

获取Page.Master的引用 - 您需要将其强制转换为母版页的类型才能访问自定义属性。

您可以在自己网页的属性中执行此操作,以便于使用。

答案 1 :(得分:0)

您可以在contentPage中添加 masterType指令。然后,您可以访问您的公共财产键入

<%MasterType VirtualPath="~/PATH_MASTER_PAGE/yourMasterPageName.master" %>

contentPage.vb

if Pager.Master.u.loggedIn then
  ' do something
else
  ' do something else
end if

HTH

答案 2 :(得分:-1)

对我来说,如果你使用会话变量或viewstate服务器端,比如

,那就更好了

Session [“loggedIn”] = true