簡體   English   中英

動態生成的ASP.NET頁面沒有基本的html結構

[英]Dynamically generated ASP.NET page hasn't basic html structure

我寫了一個頁面(只有從System.Web.UI.Page派生的類,我想在更多網站中使用。我將Webcontrols動態添加到Page.Controls集合中,如下所示:

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部分? 可能嗎?

我建議使用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());
    }       

}

我不相信有任何方法可以自動生成標記,但是您可以創建自己的Render方法,以輸出所需的基本HTML框架。

在使用MasterPages之前,為頁面添加頁眉和頁腳的一種常見方法是從諸如http://gist.github.com/214437的BasePage繼承,並從BasePage加載頁眉和頁腳控件繼承。 我認為,與上面的BasePage相比,MasterPage是更好的選擇。 母版頁的缺點之一是您必須在每個頁面上添加asp:content,但它仍然比舊方法更好。

如果您的“頁面”是完全動態的並且沒有aspx前端(我沒有意識到這是可能的嗎?!)……那么您真正想要的可能是自定義HttpHandler而不是從Page繼承。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM