ASP.NET:页面HTML头部渲染

时间:2010-04-01 10:54:08

标签: 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);
    }

现在我有两个问题:

  1. 上述代码如何影响性能(在生产环境中这是否可行)?
  2. 有更好的方法吗,例如我可以覆盖的方法只是自定义呈现<head>
  3. 哦是的ASP.NET MVC不是一个选项。

    修改

    我问这个关于SEO和一点点完美主义。

1 个答案:

答案 0 :(得分:5)

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

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

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

相关问题