我一直在尝试找出自定义呈现 <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);
}
现在我有两个问题:
- 上述代码如何影响性能(这在生产环境中是否可行)?
- 有没有更好的方法来做到这一点,例如我可以覆盖的方法来自定义呈现
<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/