为什么MasterPage的set变量从内容页面为空访问

时间:2015-06-16 13:15:40

标签: c#

母版:

public string strP;

public void Page_Load()
{
    strP = @"SELECT * FROM ...";
}

内容页面:

public void Page_Load() {
    if (!Page.IsPostBack) {
        string strO = Master.strP; //strO = null
    }
}

我知道我应该使用Page_Init但有人可以协助我确保我能够从内容页面获得strP的设定值。

3 个答案:

答案 0 :(得分:3)

这是页面生命周期......

Content Page的加载方法将在Masterpage的Load方法之前触发。在两个Load事件处理程序中打一个断点,你会明白我的意思......

答案 1 :(得分:1)

Page_Load()是为了让您做一些与页面相关的事情。你推迟了一些在构造函数中无法做的事情,因为缺少相关的对象(比如RequestResponse等)。

查看代码,设置静态SQL语句(不需要与请求进行任何交互等)可以在构造函数中完成。

如果它与请求相关,您可以将其放在母版页的Init事件中。

另见Variables from Master Page always empty上的相关答案。

答案 2 :(得分:1)

如果其他人有相同的问题或想知道如何实现我的要求,请执行以下详细步骤:

首先在MasterPage中分配公共变量:

public string strO;

protected void Page_Init(object sender, EventArgs e)
{
    strO = @""; //whatever the variable supposed to be
}

在内容页面中调用:

public string strOT;
protected void Page_Init(object sender, EventArgs e)
{
    strOT = Master.strO;
}