2

我今天在看 Blogengine.NET,他有一个有趣的主题设置,我想我想做类似的事情,但是......我根本无法让它工作。

对于每个主题,他都有一个文件夹,例如:

/主题/靛蓝/

/主题/标准/

/主题/手机/

每个主题都包含一个 site.master,它们都有自己的代码隐藏,如下所示:

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

想知道他如何在 3 个不同的地方为每个主题设置一个 Page_Load,所有这些都是“站点”的部分类,但我在我的 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")

还是有更好的方法来实现这一点?

谢谢!

4

3 回答 3

1

找到了解决方案,所以如果其他人正在寻找同样的东西,我会在这里发布。

多个相同的母版页适用于 .NET 网站,但不适用于 .NET Web 应用程序。也许其他人可以解释为什么,我只知道是这样。

所以这适用于 .NET 网站:

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

但它不适用于 .NET Web 应用程序,因为只有一个 site.master。

让我想知道是否有另一种好方法可以坚持使用 Web 应用程序,但仍然能够进行 WordPress 或 Blogengine.NET 等主要主题

于 2009-02-12T07:49:47.523 回答
0

您可以在 Page_PreInit 期间为您的页面设置 MasterPage,如下所示:

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

于 2009-02-11T18:54:49.870 回答
0

我为模板文件添加了前缀以包含主题名称,您不能拥有多个相同主文件的原因是它将创建相同的类

我已经取得的一个例子如下

ThemeName = "EA"- 从 Web.config 提供

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

生成 ~/Themes/EA/EASite.Master

我还创建了一些我的所有网站都可能使用的通用 UserControls,如果我想用自定义用户控件覆盖它们,那么我使用与上面相同的命名约定检查我的自定义用户控件文件夹中是否存在该控件,并包含该控件,如果不使用自定义的。

我希望这可以帮助任何试图实现与我昨晚相同的目标的人。这只是初稿,可能会与我使用的生产版本有所不同,但我认为这将是一个好的开始

于 2009-09-24T08:48:43.790 回答