Наследование нескольких форм от базовой
Всем привет. Немного предыстории.
Чтобы лучше понять, что я имею в виду, приведу куски кода. Код получился объемный, но простой, поэтому не поленитесь, господа, с ним ознакомится.
Ситуация следующая. Есть несколько WebForm (страницы aspx). Код их представлен ниже:
Страница 1:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Страница 1</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="myLabelPage_1"></asp:Label>
</div>
</form>
</body>
</html>
namespace WebApplication1
{
public partial class WebForm_1 : System.Web.UI.Page
{
// Общие для обеих страниц поля.
public string FirstName;
public string LastName;
protected void Page_Load(object sender, EventArgs e)
{
myLabelPage_1.Text = "Страница 1 " + FirstName + " " + LastName;
}
}
}
Страница 2:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Страница 2</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="myLabelPage_2"></asp:Label>
</div>
</form>
</body>
</html>
namespace WebApplication1
{
public partial class WebForm_2 : System.Web.UI.Page
{
// Общие для обеих страниц поля.
public string FirstName;
public string LastName;
protected void Page_Load(object sender, EventArgs e)
{
myLabelPage_2.Text = "Страница 2 " + FirstName + " " + LastName;
}
}
}
Как можно заметить, что в классе WebForm_1, что WebForm_2 присутствуют одинаковые поля, это:
public string FirstName;
public string LastName;
Следовательно, напрашивается мысль, чтобы вынести их в отдельный базовый класс, который будет наследоваться от System.Web.UI.Page и содержать данные поля, что в принципе я и делаю. Для этого создаю класс MyBasePage.
namespace WebApplication1
{
// Базовый класс для наших страниц.
public partial class MyBasePage : System.Web.UI.Page
{
public string FirstName;
public string LastName;
}
}
Далее я классы WebForm_1 и WebForm_2, вместо наследования от системного System.Web.UI.Page, наследую от моего класса MyBasePage.
Страница 1
namespace WebApplication1
{
public partial class WebForm_1 : MyBasePage
{
protected void Page_Load(object sender, EventArgs e)
{
FirstName = "Вася";
LastName = "Иванов";
myLabelPage_1.Text = "Страница 2 " + FirstName + " " + LastName;
}
}
}
Страница 2
namespace WebApplication1
{
public partial class WebForm_2 : MyBasePage
{
protected void Page_Load(object sender, EventArgs e)
{
FirstName = "Петя";
LastName = "Петров";
myLabelPage_2.Text = "Страница 2 " + FirstName + " " + LastName;
}
}
}
В результате по наследству я получаю поля:
public string FirstName;
public string LastName;
Теперь сам вопрос.
Обзательно ли при создании пользовательского класса, который будет являться базовым классом для страниц ASPX, создавать полноценную форму, которая содержит и разметку ASPX, и code behind, и наследоваться от нее?
Или можно поступить, как сделано у меня, т.е.:
- Просто создать класс C#, унаследовать его от
System.Web.UI.Page. - Наследовать от созданного пользовательского класса вновь создаваемые страницы ASPX.
Насколько так делать правильно, так сказать, по феншую, и не противоречит ли это каким-нибудь соглашениям, принятым при разработке на ASP.NET WebForms?
Почему задаю такой вопрос? Просто в Интернете много видел примеров, когда базовый класс для WebForm создается на основе другой веб-формы, которая уже содержит и code behind и разметку ASPX. В моем же случае разметки ASPX нет, есть только код на C#.