2011-03-20 58 views
1

我的母版页:ASP.net母版页/内容页简单的设计问题

public partial class MasterPages_Main : System.Web.UI.MasterPage 
{ 
    public bool IsLoggedIn; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     // Check login 
     LoggedInUser ThisUser = new LoggedInUser(); 
     IsLoggedIn = ThisUser.IsLoggedIn; 

     Response.Write("Master" + IsLoggedIn.ToString()); 

    } 

这个输出“真”,我们都记录在

在我的内容页我做:

protected void Page_Load(object sender, EventArgs e) 
{ 

    Response.Write("CONTENT:" + Master.IsLoggedIn.ToString()); 
} 

但是这输出'假'。

所以实际页面输出为:

Content:False 
Master:True 

在我的内容页,我需要,如果用户登录重定向,但该值始终从内容看网页点假的!我该如何解决这个问题?

+0

解决,改变主页page_init的作品。 – 2011-03-20 16:45:22

回答

3

内容页面载入事件发生在主载入之前(从here)。因此,您可能需要更改逻辑,也可以从主Page_Load调用一些内容页面的方法。或者在Master Init事件处理程序中设置IsLoggedIn

+0

谢谢,init没有工作,因为它为其他一些逻辑做了同样的事情,但模块化它并在主函数中放入一些逻辑似乎解决了这个问题。 – 2011-03-20 17:02:06

1

母版页在您的Page_Load()代码后被调用。试试这个:

Protected void Page_Load(object sender, EventArgs e) 
{ 
    base.Page_Load(sender,e); 
    Response.Write("CONTENT:" + Master.IsLoggedIn.ToString()); 
} 
+0

如果它从未被调用,那么它现在如何输出'主:真'? – David 2011-03-20 16:38:07

+0

对不起,这不起作用。此外,我认为它正在加载,因为它正在得到一切正常,但它只是以错误的顺序加载 – 2011-03-20 16:42:14

+0

更改主page_load为page_init似乎强制它加载第一个工作。 – 2011-03-20 16:44:10

2

更改主文件Page_LoadPage_Init,这将强制它在内容页面之前执行。