10

たくさんのユーザー コントロールがあるページがあります。コードで置き換えられるコンテンツに「マクロ」または「プレースホルダー」を直接配置できるようにしたいと考えています。大したことではありませんが、私は CMS として Ektron を使用しています。

クライアントに送信される直前に、レンダリングされたページ コンテンツ全体で文字列置換を行うためにフックできるページ イベントはありますか?

アップデート

これを達成するために現在使用しているコードは次のとおりです。

protected override void Render(HtmlTextWriter writer)
{
    string content = string.Empty;

    using (var stringWriter = new StringWriter())
    using (var htmlWriter = new HtmlTextWriter(stringWriter))
    {
        // render the current page content to our temp writer
        base.Render(htmlWriter);
        htmlWriter.Close();

        // get the content
        content = stringWriter.ToString();
    }

    // replace our placeholders
    string newContent = content.Replace("$placeholder1$", "placeholder1 data").Replace("$placeholder2$", "placeholder2 data");

    // write the new html to the page
    writer.Write(newContent);
}
4

5 に答える 5

5

使用できるアプローチは 2 つあります。

  1. これは、受け入れられた回答に似ています。ただし、 BasePageで render メソッドをオーバーライドし、 これからすべてのテンプレートを派生させることをお勧めします。

  2. HttpModule または Global.asax を使用して、Filterを Response オブジェクトにアタッチします。「Filter」プロパティは、まさにあなたが望むものである出力をフィルタリングするのに役立つはずなので、私にはこれがより美的な意味を持ちます!

于 2009-11-08T01:21:36.427 に答える