Не могу переопределить предварительную загрузку, потому что не функционирует?

#asp.net #page-lifecycle

#asp.net #страница-жизненный цикл

Вопрос:

Еще один вопрос новичка .net

Я создал класс, который наследует System.Web.UI.Page с намерением переопределить функции предварительной загрузки и выгрузки. Но Visual Studios жалуется, что я не могу переопределить, потому что «System.Web.UI.Page.Предварительная загрузка» не является функцией. Что не так с моим кодом? Вот оно:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;

public partial class BTPage : System.Web.UI.Page
{
    protected SqlConnection cnx;

    public override void PreLoad(object sender, EventArgs e)
    {
        cnx = new SqlConnection(ConfigurationManager.AppSettings["btdatabase"]);
        cnx.Open();
    }

    protected void Unload(object sender, EventArgs e)
    {
        cnx.Close();
    }
}
  

Если есть что-то еще тревожное в моем коде, пожалуйста, скажите мне. Я новичок в .Net и я не уверен, что я делаю что-то «.NET way».

Что я также хочу сделать, так это чтобы каждая веб-страница наследовала от BTPage, чтобы все они открывали соединение с базой данных при предварительной загрузке.

Ответ №1:

PreLoad не является методом Page типа. Вам нужно переопределить OnPreLoad

Комментарии:

1. Хорошо, я изменил PreLoad на OnPreLoad , и теперь я получаю эту ошибку: 'BTPage.OnPreLoad(object, System.EventArgs)': no suitable method found to override . Есть идеи?

2. OnPreLoad это не подписка на событие, но откуда событие запускается, что означает, что у него нет sender аргумента. Вам следует изменить сигнатуру метода на protected override void OnPreLoad(EventArgs e) .