我今天看着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")
或者有更好的方法来实现这个目标吗?
谢谢!
答案 0 :(得分:1)
找到了解决方案,所以如果其他人正在寻找相同的东西,我会在这里发布。
多个相同的主页在.NET网站中有效,但在.NET Web应用程序中无效。 也许其他人可以解释原因,我只知道情况就是这样。
所以这适用于.NET网站:
Me.MastePageFile = "~/themes/" & Theme & "/site.master"
但它不适用于.NET Web应用程序,因为只能有一个site.master。
让我想知道是否有另一种好方法可以坚持使用Web应用程序,但仍能够像WordPress或Blogengine.NET那样进行主要的主题
答案 1 :(得分:0)
您可以在Page_PreInit期间为您的页面设置MasterPage,如下所示:
Me.MasterPageFile =“〜/ themes / mytheme / theme.master”
答案 2 :(得分:0)
我为我的模板文件添加前缀以包含主题名称,你不能拥有多个相同主文件的原因是它会创建相同的类
我所取得的成就如下
ThemeName = "EA"
- 从Web.config提供
Me.MasterPageFile = "~/Themes/" & ThemeName & "/" & ThemeName & "Site.Master"
生成〜/ Themes / EA / EASite.Master
我还创建了一些我的网站可能使用的通用UserControl,如果我想用自定义用户控件覆盖它们,那么我使用与上面相同的命名约定检查我的自定义用户控件文件夹中是否存在控件,并包括,如果不使用自定义的那个。
我希望这有助于任何人尝试实现我昨晚的目标。这只是初稿,可能会改变我使用的生产版本,但我认为这是一个好的开始