2

私は今日、Blogengine.NET を見ていました。彼はテーマの興味深い設定をしています。しかし、私は似たようなことをしたいと思っていました..私はそれをまったく機能させることができません。

テーマごとに、次のようなフォルダーがあります。

/テーマ/インディゴ/

/テーマ/標準/

/テーマ/モバイル/

各テーマには site.master が含まれており、すべてに次のような独自のコード ビハインドがあります。

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

3 つの異なる場所でテーマごとに 1 つの 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 Web サイトでは機能しますが、.NET Web アプリケーションでは機能しません。他の誰かが理由を説明できるかもしれませんが、私はそれが事実であることを知っています.

したがって、これは .NET Web サイトで機能します。

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

ただし、site.master は 1 つしか存在できないため、.NET Web アプリケーションでは機能しません。

WordPress や Blogengine.NET などの主要なテーマを実行しながら、Web アプリケーションに固執する別の良い方法があるかどうか疑問に思います。

于 2009-02-12T07:49:47.523 に答える
0

テンプレート ファイルにプレフィックスを付けてテーマ名を含めました。同じマスター ファイルを複数持つことができない理由は、同じクラスが作成されるためです。

私が達成したことの例は次のとおりです

ThemeName = "EA"- Web.config から提供

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

~/Themes/EA/EASite.Master を生成します

また、すべてのサイトで使用できる一般的な UserControls をいくつか作成し、それらをカスタム ユーザー コントロールでオーバーライドする場合は、上記と同じ命名規則を使用して、カスタム ユーザー コントロール フォルダーにコントロールが存在するかどうかを確認し、それを含めます。 、カスタムのものを使用しない場合。

これが、昨夜と同じことを達成しようとしている人の助けになることを願っています. これは最初のドラフトであり、私が使用している製品バージョンから変更される可能性がありますが、良いスタートになると思います

于 2009-09-24T08:48:43.790 に答える
0

次のように、Page_PreInit 中にページの MasterPage を設定できます。

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

于 2009-02-11T18:54:49.870 に答える