Несколько тем и мастер-страниц в VB.NET - PullRequest
2 голосов
/ 11 февраля 2009

Я смотрел на Blogengine.NET сегодня, и у него есть интересная установка для Тем, но я решил сделать что-то подобное, однако .. Я не могу заставить его работать вообще.

Для каждой темы у него есть папка вроде:

/ темы / Indigo /

/ темы / Standard /

/ темы / Mobile /

Каждая тема содержит site.master, и все они имеют собственный код, который выглядит следующим образом:

public partial class site : System.Web.UI.MasterPage
{
  protected void Page_Load(object sender, EventArgs e)
  {
  }
}

Интересно, как он мог получить одну Page_Load для каждой темы в 3 разных местах, все с частичными классами "сайта", но я попробовал это сделать в своем приложении VB.NET, и я подумал, что это не работает

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
has multiple definitions with identical signatures

Я довольно новичок в этом, но есть ли способ заставить это работать или это то, что просто работает в C #?

Я хотел бы получить разные мастер-страницы и пользовательские элементы управления примерно так:

MasterPageFile = "~/MasterPages/" & Theme & "/Site.master"

uc = LoadControl("~/UserControls/" & Theme & "/Box.ascx")

Или есть лучший способ сделать это?

Спасибо!

Ответы [ 3 ]

1 голос
/ 12 февраля 2009

Нашел решение, поэтому я опубликую его здесь, если кто-то еще ищет то же самое.

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

Так что это работает на веб-сайте .NET:

Me.MastePageFile = "~/themes/" & Theme & "/site.master"

Но это не будет работать в веб-приложениях .NET, так как может быть только один site.master.

Заставляет меня задуматься, есть ли еще один хороший способ придерживаться веб-приложения, но все же иметь возможность делать основные темы, как WordPress или Blogengine.NET

0 голосов
/ 24 сентября 2009

Я поставил перед моим файлом шаблона префикс, содержащий имя темы. Причина, по которой вы не можете использовать несколько одинаковых мастер-файлов, заключается в том, что он создаст один и тот же класс

Пример того, чего я достиг, следующий:

ThemeName = "EA" - Предоставлено из Web.config

Me.MasterPageFile = "~/Themes/" & ThemeName & "/" & ThemeName & "Site.Master"

Создает ~ / Темы / EA / EASite.Master

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

Надеюсь, это поможет любому, кто пытается достичь того же, что и прошлой ночью. Это только первый черновик и может измениться с производственной версии, которую я использую, но я думаю, что это было бы хорошим началом

0 голосов
/ 11 февраля 2009

Вы можете установить MasterPage для своей страницы во время Page_PreInit следующим образом:

Me.MasterPageFile = "~ / themes / mytheme / theme.master"

...