C# ASP.NET:页面HTML头部呈现

C# ASP.NET:页面HTML头部呈现,c#,asp.net,C#,Asp.net,我一直在试图找出定制呈现页面的元素的最佳方法,以消除由导致的额外换行,从而使其格式正确 到目前为止,我发现唯一有效的方法是: protected override void Render(HtmlTextWriter writer) { StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWr

我一直在试图找出定制呈现页面的
元素的最佳方法,以消除由
导致的额外换行,从而使其格式正确

到目前为止,我发现唯一有效的方法是:

    protected override void Render(HtmlTextWriter writer)
    {
        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
        base.Render(htmlTextWriter);
        htmlTextWriter.Close();
        string html = stringWriter.ToString();
        string newHTML = html.Replace("<title>\r\n\t", "<title>")
                             .Replace("\r\n</title>", "</title>")
                             .Replace("</head>", "\n</head>");

        writer.Write(newHTML);
    }
受保护的覆盖无效渲染(HtmlTextWriter)
{
StringWriter StringWriter=新StringWriter();
HtmlTextWriter HtmlTextWriter=新的HtmlTextWriter(stringWriter);
base.Render(htmlTextWriter);
htmlTextWriter.Close();
字符串html=stringWriter.ToString();
字符串newHTML=html.Replace(“\r\n\t”,”)
.Replace(“\r\n”,”)
.替换(“,”\n”);
writer.Write(newHTML);
}
现在我有两个问题:

  • 上面的代码是如何影响性能的(那么这在生产环境中是否可行)
  • 是否有更好的方法来实现这一点,例如,我可以覆盖一个方法,以便只自定义渲染
  • 哦,是的,ASP.NETMVC不是一个选项

    编辑:


    我问这个问题是关于搜索引擎优化和一点完美主义。

    根据我的经验,使用ASP.NET表单意味着不可撤销地放弃对HTML输出的控制权。最好接受以下情况:

        protected override void Render(HtmlTextWriter writer)
        {
            StringWriter stringWriter = new StringWriter();
            HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
            base.Render(htmlTextWriter);
            htmlTextWriter.Close();
            string html = stringWriter.ToString();
            string newHTML = html.Replace("<title>\r\n\t", "<title>")
                                 .Replace("\r\n</title>", "</title>")
                                 .Replace("</head>", "\n</head>");
    
            writer.Write(newHTML);
        }
    
    • Microsoft表单控件有时会使用降价或完全错误的HTML
    • Viewstate标记将始终存在,即使在页面或站点级别禁用Viewstate。显然,需要有一个视图状态来告诉ASP.NET没有视图状态
    • 您不能控制表单元素。每页将有一个表单元素,它属于ASP.NET
    • JavaScript将用于执行甚至是基本的任务。JavaScript将是不可读的,直接嵌入到您的页面中,并且至少有50%是无关的
    • 您将无法创建页面片段,除非您通过web服务和大量乱七八糟的内容来创建。每个.aspx页面都会有
      标签,而且几乎总是
      标签

    如果您想要对页面输出进行良好的控制,那么使用MVC或其他框架几乎是强制性的。即使是经典的ASP也能工作,但ASP.NET表单不行。

    为什么要去掉多余的换行符?这种完美主义尤其适用于标记代码,这只会导致您的长期痛苦。由于在渲染时空格会被折叠,所以一些额外的换行符毫无意义。+1因此,要么切换框架/语言,要么停止关注。我会等一会儿,把这个标记为答案,看看我是否能得到更多的信息。谢谢