Как наследовать класс страницы из библиотеки классов - PullRequest
1 голос
/ 16 марта 2011

Аюп

Возможно, я задаю глупый вопрос, но у меня есть клиент, для которого мне нужно создать много веб-сайтов (10+) (asp.net 3.5), в которых все страницы на каждом сайте будут иметь одинаковый код, но сайты будут запускаться в разных регионах и, следуя одному и тому же шаблону, будут иметь разное содержание.

Я создал и запустил сайт 1, а сайты 2, 3 и 4 почти живы, но мне приходит в голову, что, поскольку все сайты в основном одинаковы, код будет сложнее обновлять, поскольку он будет быть дублированным, поэтому, если мне нужно исправить ошибку на одном сайте, мне нужно будет исправить это на всех сайтах (и это будет сложно.)

Мне было интересно, возможно ли каким-либо образом создать библиотеку классов для всех текущих файлов aspx.cs, ссылаться на эту dll на каждом веб-сайте, а затем наследовать эти классы в файлах .aspx.cs. Таким образом, default.aspx на каждом сайте все еще будет иметь CodeFile «Default.aspx.cs», но Default.aspx.cs будет наследовать соответствующий класс от dll:

using WebPagesClass;
public partial class _Default : WebPagesClass._Default
{ }

Причина, по которой я так поступаю, заключается в том, что если мне нужно изменить какой-либо код на определенном веб-сайте (например, для незначительных изменений в языках), я могу переопределить функции страницы и изменить требуемые части. Для всех других страниц, которые не имеют cha, я могу просто скопировать с одного сайта.

Возможно ли это смутно? Если не кто-нибудь, кто-нибудь получит какие-нибудь убийственные предложения о том, как управлять таким количеством веб-сайтов из одной кодовой базы?

Приветствие T

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Можно ли перенести все различия между сайтами в ASP.Net Themes или в конфигурационные файлы? Похоже, лучший подход ко мне

0 голосов
/ 16 марта 2011

Конечно, вы можете сделать это. Но вам нужно убедиться, что ваш базовый класс наследуется от System.Web.Page.

Итак, создайте библиотеку, добавьте необходимые ссылки (System.Web и т. Д.) И создайте свой базовый класс:

public class MyBasePage: System.Web.Page
{

}

Тогда вы можете указать это как базовый класс для всех остальных ваших страниц.

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

Я предполагаю, что вы хотите выполнить эту работу, потому что на страницах есть куча похожих кодов, но я также предполагаю, что есть также некоторые специфические объявления кода / управления. Поэтому я бы создал базовый класс и поместил туда общий код и просто наследовал от этого класса ...

...