gpt4 book ai didi

c# - 在 ASP.NET 中向页眉添加控件

转载 作者:太空狗 更新时间:2023-10-29 21:03:40 27 4
gpt4 key购买 nike

我正在 ASP.NET 中创建自定义脚本控件

控件的用途只是标签的服务器变体,用于加载javascript文件但是,此控件的主要目的是将多个脚本组合成一个响应,因此在客户端他们会看到类似 每个位置的标签,因此在 DocumentTop 位置注册的所有脚本都将合并到一个标签中,除了“内联”位置外,所有内联脚本都在它们存在于标记中的位置单独呈现我还创建了一个 httphandler js.ashx,它执行脚本的实际组合

除了“Head”位置外,一切都工作正常,对于两个文档位置,我在预渲染期间简单地使用了 ClientScriptManager,但对于 Head 位置,我在预渲染期间尝试了以下代码

var scriptControl = new HtmlGenericControl("script");
scriptControl.Attributes["language"] = "javascript";
scriptControl.Attributes["type"] = "text/javascript";
scriptControl.Attributes["src"] = src;
Page.Header.Controls.Add(scriptControl);

我收到以下错误:在 DataBind、Init、Load、PreRender 或 Unload 阶段不能修改控件集合。

有谁知道如何从自定义控件中向页眉添加控件?

顺便说一句,该控件用在一个内容页面上,该内容页面有两个嵌套母版,并且还有一个在根母版上注册的 ScriptManager。该项目是一个asp.net 3.5 web应用项目

最佳答案

我找到了问题的答案。

我不太明白为什么,但问题在于当我尝试将我的脚本控件添加到头部时,在控件的 PreRender 事件中执行此操作会导致我的错误,但如果您在 Page 的 PreRender 事件期间添加控件一切正常,花花公子例如:

protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Page.PreRender += new EventHandler(Page_PreRender);
}

void Page_PreRender(object sender, EventArgs e)
{
var scriptControl = new HtmlGenericControl("script");
Page.Header.Controls.Add(scriptControl);
scriptControl.Attributes["language"] = "javascript";
scriptControl.Attributes["type"] = "text/javascript";
scriptControl.Attributes["src"] = "blah.js";
}

关于c# - 在 ASP.NET 中向页眉添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com