我正在使用Web用户控件(.ascx),它将包含在常规Web表单(.aspx)中,但我需要能够从用户控件中动态地将代码插入到文档的头部.在我的Coldfusion日子里,<cfhtmlhead>可以解决问题.在ASP.NET或类似的黑客中是否存在相同的内容?
Eil*_*lon 35
要添加HTML标记,您可以执行以下操作:
在UserControl的代码中,您可以访问Page.Header,它本身就是一个控件.然后,您可以添加新控件来控制该控件:
HtmlGenericControl newControl = new HtmlGenericControl("someTag");
newControl.Attributes["someAttr"] = "some value";
Page.Header.Controls.Add(newControl);
Run Code Online (Sandbox Code Playgroud)
要添加脚本标记,您根本不需要访问头标记,因为ASP.NET在ClientScriptManager上有帮助方法,可以为您完成工作:
以下是您可以在用户控件的代码中添加的一些代码的示例:
// Register some inline script:
Page.ClientScript.RegisterClientScriptBlock(GetType(), "myAlertScript", "alert('hello!')", true);
// Register a script reference:
Page.ClientScript.RegisterClientScriptInclude(GetType(), "myLibraryScript", "~/Scripts/MyScriptLibrary.js");
Run Code Online (Sandbox Code Playgroud)
nu *_*est 13
我意识到这是一个老问题,但这是另一个例子.
试试这个:
Page.Header.Controls.Add(
new LiteralControl(
"<script>alert('Literal Added to <Head>.');</script>"
)
);
Run Code Online (Sandbox Code Playgroud)
如果要在特定索引处添加脚本,则<head>可以使用
AddAt(index, new LiteralControl(...)) 其中索引0等于顶部 <head>
此外,您需要添加runat="server"头部标签,例如<head id="head1" runat="server">
this.Page.Header.Controls.Add
Run Code Online (Sandbox Code Playgroud)
通过执行此操作,您将向头部添加控件.您可以添加任何类型的控件.如果您觉得需要添加简单文本(或者您想手动编写标记),请查看LiteralControl类.