我试图在C#中创建动态元标记,但它给出以下错误:
无法修改Controls集合,因为控件包含代码块(即<%...%>)
这是我添加的代码:
HtmlMeta meta = new HtmlMeta();
meta.Name = "keywords";
meta.Content = "book,paper";
Page.Header.Controls.Add(meta);
Run Code Online (Sandbox Code Playgroud)
非常感谢你.
Joe*_*ler 171
很难说清楚,因为你没有包含很多细节,但我认为发生的事情是<% ... %>你的内部有代码块Page.Header(指的是<head runat="server">- 可能在母版页中).因此,当您尝试将项添加到该控件的Controls集合时,您将在此问题的标题中收到错误消息.
如果我是对的,那么解决方法是<asp:placeholder runat="server">在<% ... %>代码块周围包装一个标记.这使得代码块成为占位符控件的子代,而不是控件的直接子代Page.Header,但它根本不会更改呈现的输出.既然代码块不是Page.Header你的直接子代,你可以添加东西到标题的控件集合而不会出错.
同样,某处有一个代码块,或者你不会看到这个错误.如果它不在您的aspx页面中,那么我看的第一个地方是MasterPageFile您的aspx顶部属性引用的文件.
Örv*_*var 14
如果您使用的是Telerik组件,并且在javascript中有<%= ....%>的引用,请使用RadScriptBlock包装脚本标记.
<telerik:RadScriptBlock ID="radSript1" runat="server">
<script type="text/javascript">
//Your javascript
</script>
</telerik>
Run Code Online (Sandbox Code Playgroud)
关心Örvar