【问题标题】:Why is the set variable of a MasterPage empty accessing from Content Page为什么从内容页面访问 MasterPage 的 set 变量为空
【发布时间】:2015-06-16 21:41:40
【问题描述】:

母版页:

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 的设置值。

【问题讨论】:

    标签: c#


    【解决方案1】:

    这取决于页面生命周期...

    内容页面的加载方法将在母版页的加载方法之前触发。在两个 Load 事件处理程序中打断点,你就会明白我的意思了......

    【讨论】:

    • 对不起帕特里克 - 我读到你的评论指责我试图从你的帖子中滤出。这是因为 a) 我是个白痴,b) 我准备好杀了,因为我正在尝试在 IE 上调试客户端脚本,而现在一切都不太完美......
    【解决方案2】:

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

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

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

    另请参阅我在 Variables from Master Page always empty 上的相关答案。

    【讨论】:

    • 为什么不把 VTC 作为你其他答案的欺骗?
    • 因为他要求澄清相关答案。
    • 我正在从多个页面访问该变量,因此试图将其保留在 Master 中。
    • @SearchForKnowledge:所以我说你可以,我什至给你指出了正确的事件,对吧?
    【解决方案3】:

    如果其他人有同样的问题或想知道如何实现我的要求,这里是详细的步骤:

    首先在 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;
    }
    

    【讨论】:

    • 这就是我的建议,对吧?它要么是Init,要么是构造函数。
    • 是的,但我想为任何有相同问题的人添加一个示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多