2

私はページを書きました( System.Web.UI.Pageから派生したクラスのみ、より多くのWebサイトで使用したいです。次のようにPage.ControlsコレクションにWebコントロールを動的に追加します:

Panel p = new Panel();
p.Style.Add("float", "left");
p.Controls.Add(locLT);
Page.Controls.Add(p);

このコードはレンダリングのみ

<div style="float:left;">
</div>

これを手動で記述せずに、HTML、HEADER、および BODY セクションを追加するにはどうすればよいですか? 出来ますか?

4

4 に答える 4

1

MasterPages をお勧めしますが、これを行うことができます。

public class CustomBase : System.Web.UI.Page  
{    
    protected override void Render( System.Web.UI.HtmlTextWriter textWriter ) 
    {
        using (System.IO.StringWriter stringWriter = new System.IO.StringWriter())
        {
             using (HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter))
             {    
                 LiteralControl header =new LiteralControl();
                 header.Text = RenderHeader(); // implement HTML HEAD BODY...etc

                 LiteralControl footer = new LiteralControl();
                 footer.Text = RenderFooter(); // implement CLOSE BODY HTML...etc

                 this.Controls.AddAt(0, header); //top
                 this.Controls.Add(footer); //bottom

                 base.Render(htmlWriter); 
             }
        }

        textWriter.Write(stringWriter.ToString());
    }       

}
于 2009-10-21T00:16:39.623 に答える
0

MasterPagesを使用する前は、ページのヘッダーとフッターを追加する一般的な方法は、http://gist.github.com/214437などのBasePageと、BasePageの読み込みヘッダーとフッターのコントロールから継承することでし。上記のBasePageよりもMasterPageの方が適していると思います。MasterPageの欠点の1つは、すべてのページにasp:contentを追加する必要があることですが、それでも古い方法よりも優れています。

于 2009-10-20T17:26:25.133 に答える
0

タグを自動的に生成する方法はないと思いますが、必要な基本的な HTML フレームワークを出力する独自の Render メソッドを作成できます。

于 2009-10-20T16:58:55.737 に答える
0

あなたの「ページ」が完全に動的で、aspx フロントエンドがない場合 (これが可能だとは思いませんでした?!)...その場合、本当に必要なのは、ページから継承するのではなく、おそらくカスタム HttpHandler です。

于 2009-10-20T23:37:44.983 に答える