ASP.Net Custom Control在Head标签中呈现JavaScript代码?

时间:2011-02-03 14:44:06

标签: asp.net .net-4.0 custom-controls

我正在创建一个自定义控件,并想知道是否可以在它所放置的页面的head标签中呈现任何JavaScript?我想我需要使用FindControl方法,但我不确定我需要绑定到什么。我在想这个页面对象?如果我正在考虑正确的方向,或者是否有其他选择,请告诉我。

我对上述想法的唯一关注是如何在头标记中放置一些代码时呈现我的所有内容?

由于

2 个答案:

答案 0 :(得分:2)

protected override void OnPreRender(EventArgs e) {
    base.OnPreRender(e);

    string includeTemplate = "<link rel='stylesheet' type='text/css' href='{0}' />\n";
    string includeLocation = Page.ClientScript.GetWebResourceUrl(GetType(), "Path.To.Resources.css");
    LiteralControl include = new LiteralControl(String.Format(includeTemplate, includeLocation));
    Page.Header.Controls.Add(include);
}

我在我的控制库中使用它来包含css和javascript文件。

答案 1 :(得分:1)

是的,如果你这样做:

this.Page.Header

这使您可以访问head元素,并且可以动态地为此添加脚本标记。我想我使用LiteralControl静态附加脚本标记,我在Load事件中做到了,这对我很有用。我也看到了这种方法:http://forums.asp.net/t/1306647.aspx

如果使用AJAX(Page.ClientScript也使用相同的方法),您也可以使用ScriptManager.RegisterClientScriptBlock或RegisterClientScriptInclude方法添加(而不是在头部,但在体内,脚本)。

HTH。