动态修改页面的DOCTYPE及一个小发现

    在实现新的Skin-Paperclip的时候,页面DOCTYPE需要使用:    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    可其他的Skin使用的都是:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    而所有的Skin都是通过一个default.aspx以控件的方式加载的,如果改了default.aspx的DOCTYPE,其他Skin的页面显示就会受影响,只能根据不同的Skin显示不同的DOCTYPE,我想到了一个方法,重载Render方法,在页面Render之前输出所需的DOCTYPE,代码如下:
    先删除default.aspx中的DOCTYPE代码。
protected override void Render(HtmlTextWriter writer)
        {
            
if (!IsPostBack)
            {
                
if(CurrentBlog.Skin.IsXHTML)
                {
                    writer.Write(
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">");
                }
                
else
                {
                    writer.Write(
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
                }
            }
            
base.Render(writer);
        }
    通过上面的代码实现后,有一个小发现。
    不知你有没有注意到,在ASP.NET中,通过.aspx文件显示的页面第一行都是空行(为什么显示空行,需要研究一下相应的源代码才能知道),而使用上面的方法,第一行就没有空行了。
posted @   dudu  阅读(4291)  评论(9编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2004-02-05 一个从Microsoft Word发表Blog文章的工具
2004-02-05 关于.Text 0.96
2004-02-05 博客园计划增加的功能
点击右上角即可分享
微信分享提示