c# - ASP.NET:页面 HTML 头部渲染

标签 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>

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

编辑:

我问的是关于 SEO 和一点点完美主义的问题。

最佳答案

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

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

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

关于c# - ASP.NET:页面 HTML 头部渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559820/

相关文章:

c# - 在 C# 中编写多播委托(delegate) - 我应该使用运算符还是 Action.Combine?

c# - 如何在 linq c# 中编写下面的 sql 查询,其中某些参数有时会为 null

c# - 获取 MVC 包查询字符串

asp.net - MVC Packages.config 可以删除

c# - 接口(interface)的 C# "explicit implementation"是否存在于 Java 中?

c# - CQRS 和 WebAPI 设计

c# - 有没有办法将vba宏代码添加到excel中?

c# - 从 HTML 导出到 PDF (C#)

c# - 测试 URL 和查询字符串是否有效

c# - 与 <li> 一起使用的 FindControl() 等效项