动态生成的ASP.NET页面也没有基本的HTML结构
-
22-09-2019 - |
题
我写了一个页面(只从的 System.Web.UI.Page 的导出,我想更多的网站使用I类动态添加到器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,头部和主体部,而无需手动写?这可能吗?
解决方案
我建议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());
}
}
其他提示
我不相信有什么办法可以自动生成标签,但你可以创建自己的渲染方法输出所需的基本HTML框架。
使用MasterPages一种常见的方式来添加页眉和页脚的一个页面之前是沿用如 HTTP一个BasePage的: //gist.github.com/214437 和从负载的BasePage页眉和页脚控制。我认为一个母版是你比上面的BasePage更好的选择。一用一母版的缺点是你必须添加ASP:在每一页的内容,但它仍然比老办法
如果您的“页”是完全动态的,没有ASPX前端(我不知道这是可能的?!)...然后你真正想要的可能是一个自定义的HttpHandler,而不是从页面继承。
不隶属于 StackOverflow