Я создал класс BasePage, который наследуется от System.Web.Ui.Page. В этом базовом классе у меня есть логическое свойство, которое проверяет, является ли страница защищенной или нет. Изначально я поместил код в событие PreInit (базового класса), но, подумав, мои производные страницы не смогут установить значение bool перед PreInit. Затем я подумал установить значение в PreInit вторичных страниц и проверить это значение в PageInit базового класса, но что, если мне нужно использовать PreInit в производной странице?
Я думал об использовании частичных методов, но не думаю, что смогу это сделать, потому что события страницы не являются частичными в System.Web.Ui.Page, верно?
Между прочим, мой класс BasePage является абстрактным классом.
Это то, что у меня есть сейчас (я не проверял это, но предположил, что это может сработать):
public abstract partial class BasePage: System.Web.UI.Page
{
public bool IsSecure { get; set; }
protected void Page_Init(object sender, EventArgs e)
{
if (!IsSecure) return;
if (PageMaster == null)
return;
if (!PageMaster.IsUserLoggedIn)
{
HttpContext.Current.Response.Redirect("~/WebForms/LogIn.aspx");
}
}
}
public partial class _Default : BasePage
{
protected void Page_PreInit(object sender, EventArgs e)
{
IsSecure = true;
}
}