Как выполнить Page_Load () в базовом классе страницы?

Или простой способ:

do {
    foreach ($response->asArray() as $item){
        //do something with it
    }
} while($response = $facebookApp->next($response));
30
задан DaveDev 29 April 2010 в 12:04
поделиться

3 ответа

Мы столкнулись с аналогичной проблемой. Все, что вам нужно сделать, это просто зарегистрировать обработчик в конструкторе. :)

public class FactsheetBase : System.Web.UI.Page 
{ 

    public FactsheetBase()
    {
        this.Load += new EventHandler(this.Page_Load);
    }

    public MyPageData Data { get; set; }  
    protected void Page_Load(object sender, EventArgs e) 
    { 
        // get data that's common to all implementors of FactsheetBase 
        // and store the values in FactsheetBase's properties 
        this.Data = ExtractPageData(Request.QueryString["data"]);             
    } 
}

Другой подход - переопределить OnLoad () , что менее предпочтительно.

public class FactsheetBase : System.Web.UI.Page 
{ 

    public FactsheetBase()
    {
    }

    public MyPageData Data { get; set; }  
    protected override void OnLoad(EventArgs e)
    {
        //your code
        // get data that's common to all implementors of FactsheetBase 
        // and store the values in FactsheetBase's properties 
        this.Data = ExtractPageData(Request.QueryString["data"]);             

        base.OnLoad(e);
    }
}
49
ответ дан 27 November 2019 в 23:37
поделиться

Хм, может я ошибаюсь, но я считаю, что это связано с наследованием: вы перезаписываете метод FactsheetBase Page_Load в производном классе.

Для его выполнения вы должны сделать что-то вроде

public partial class PerformanceFactsheet : FactsheetBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        base.Page_Load( sender, e );
        // do stuff with the data extracted in FactsheetBase
        divPerformance.Controls.Add(this.Data);
    }
}

EDIT: n8wrl определенно дал вам более чистое решение (я не программист ASPX).

4
ответ дан 27 November 2019 в 23:37
поделиться

Вместо метода Page_Load () переопределите OnLoad () и вызовите base.OnLoad () в PerformanceFactsheet

7
ответ дан 27 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: