ASP.NET动态地将代码插入到头部

Kyl*_*yle 20 c# asp.net

我正在使用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)

  • 我正在尝试将一些Javascript添加到文档的头部. (3认同)

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">


Gab*_*ams 9

this.Page.Header.Controls.Add
Run Code Online (Sandbox Code Playgroud)

通过执行此操作,您将向头部添加控件.您可以添加任何类型的控件.如果您觉得需要添加简单文本(或者您想手动编写标记),请查看LiteralControl类.