ASP.NET:页面HTML头部渲染

Fab*_*ian 4 c# asp.net

我一直在试图找出自定义渲染<head>页面元素的最佳方法,以摆脱由其引起的额外换行符<head runat="server">,因此其格式正确.

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

    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);
    }
Run Code Online (Sandbox Code Playgroud)

现在我有两个问题:

  1. 上述代码如何影响性能(在生产环境中这是否可行)?
  2. 有没有更好的方法来做到这一点,例如我可以覆盖的方法只是自定义渲染<head>

哦是的ASP.NET MVC不是一个选项.

编辑:

我问这个关于SEO和只是一点点完美主义.

Kar*_*der 5

根据我的经验,使用ASP.NET Forms意味着不可撤销地放弃对HTML输出的控制.最好接受以下内容:

  • Microsoft表单控件有时会使用折旧或错误的HTML.
  • Viewstate标记将始终存在,即使在页面或站点级别禁用ViewState也是如此.显然,需要有一个ViewState来告诉ASP.NET没有视图状态.
  • 无法控制表单元素.每页将有一个表单元素,它属于ASP.NET.
  • JavaScript将用于执行甚至基本任务.JavaScript将无法读取,直接嵌入您的页面,其中至少50%将是无关紧要的.
  • 您将无法创建页面片段,除非您通过Web服务和大量的kludge来完成.每个.aspx页面都有<html> <head>,几乎总是<form>标签.

如果您想要对页面输出进行精细控制,那么使用MVC或其他框架几乎都是强制性的.即使是经典的ASP也可以,但不是ASP.NET Forms.