我试图通过编程添加一个<meta>.当.aspx页中有Head个元素和runat = "server"个元素时,它工作正常.

后面的代码是:

HtmlMeta meta = new HtmlMeta();
meta.Name = "robots";
meta.Content = "noindex,follow";
this.Page.Header.Controls.Add(meta);

但是我在head标记中有一些脚本,其中包含像<% ... %>这样的代码块,所以我不能保留runat = "server"的值.

问题是我必须以编程方式添加meta标记,因为它取决于数据库中的值.

有没有办法解决这个问题,让我在head元素中的脚本像往常一样工作,并且我可以通过编程方式添加一个元标记?

推荐答案

好的,我测试了answer by veggerby,效果非常好:

<header>部分:

<asp:PlaceHolder id="MetaPlaceHolder" runat="server" />

请注意,VisualStudio可能会在占位符标记上显示警告,因为它不会被识别为标题中的已知元素,但您可以忽略这一点.它起作用了.

在C#代码中:

HtmlMeta meta = new HtmlMeta();
meta.Name = "robots";
meta.Content = "noindex,follow";
MetaPlaceHolder.Controls.Add(meta);

或者(因为您已经在头部分使用了<% %>的代码块),您可以直接标记元,并仅从服务器端检索值:

<meta name="robots" content="<%=GetMetaRobotsValueFromDatabase()%>" />

Asp.net相关问答推荐

在Docker Windows中,ASP.NET核心容器在自定义端口8080上运行,但ASP.NET容器在固定端口80上运行

创建项目 ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 有什么区别

我可以将图像添加到 ASP.NET 按钮吗?

Web API Queryable - 如何应用 AutoMapper?

iframe.readyState 在 chrome 中不起作用

System.Net.Http 版本冲突导致构建警告

区分开发、登台和生产环境之间的 web.config

iOS 8 / Safari 8 不适用于 ASP.NET AJAX 扩展

不支持关键字:服务器

ASP.NET Web 应用程序消息框

使用 Elmah 处理 Web 服务中的异常

Gridview ItemTemplate 中多个判断字段的最佳技术?

获取页面上特定类型的所有 Web 控件

在 ASP.NET 中使用 Messenger Connect 客户端库时出现 Javascript 错误

在 aspnetcore (netcoreapp1.0) 中替代 System.Web.Security.Membership.GeneratePassword

WebForm_PostBackOptions 文档

OWIN 和 Katana,为什么要将应用程序与服务器解耦?

调查 Web.Config 重复部分原因的步骤

可以在不 destruct 站点的情况下将 MIME 类型添加到 web.config 吗?

如何在服务器控件属性中使用 ASP.NET <%= 标签?