Один из подходов - использовать базовую страницу, которую вы всегда используете на своем сайте. Это будет содержать переменную, называемую PageLoadComplete, которую вы установили бы в конце вашего события PageLoad. Затем вы можете проверить состояние этой переменной внутри вашего метода.
public abstract class BasePage : System.Web.UI.Page
{
public bool PageLoadComplete { get; private set; }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
PageLoadComplete = true;
}
}
Если вы хотите получить доступ к переменной из кода внешней по отношению к вашей странице, такие как UserControl, вы должны сделать его открытым и бросьте вашу страницу в BasePage.
public partial class MyUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
BasePage basePage = this.Page as BasePage;
if (basePage != null && !basePage.PageLoadComplete)
{
throw new InvalidPageStateException();
}
}
}
я не знаю, если есть встроенный индикатор состояния для страниц asp.net .. но альтернативно вы можете создать перечисление с именем «LifeCycleState» с полномочиями штата и поместить переменную для хранения состояния с этим типом перечисления на странице и путем поиска событий на странице, например onload, oninit вы можете установить значение currentstate .... – dankyy1
Да, это то, что я был думая о том, нет ли такой встроенной функциональности. –
Помните YAGNI (вам это не понадобится). Только разработайте функциональность, которая вам определенно понадобится.Нет смысла поддерживать право штата через жизненный цикл страницы, если вас интересует только то, достигнуто ли одно событие страницы. В противном случае вы увеличите количество тестов и потенциальных ошибок. Жизненный цикл страницы сложный, когда вы рассматриваете пользовательские элементы управления, MasterPages и управляющие события. Пожалуйста, подумайте об этом, прежде чем писать такое перечисление. –