Asp.net Net避免自定义控件中出现多个样式和脚本块

Asp.net Net避免自定义控件中出现多个样式和脚本块,asp.net,custom-controls,Asp.net,Custom Controls,我正在开发一个自定义控件,它在ascx文件中具有自己的样式和脚本块。 所有这些都可以正常工作,但是如果我在我的aspx页面中再次使用我的控件,脚本和样式块也会重复 如何避免这个问题?< P>只要这些块在自定义控件中,你就不能做任何事情来消除重复,你应该考虑把它们移到另一个地方,或者通过代码添加它们。 编辑:我的回答假设您正在抱怨脚本/样式文件的重复链接。但是,如果您正在讨论控件内的完整脚本,请参阅。Script 您可以使用ClientScript对象以编程方式在Page_Load中注册脚本,而不

我正在开发一个自定义控件,它在ascx文件中具有自己的样式和脚本块。 所有这些都可以正常工作,但是如果我在我的aspx页面中再次使用我的控件,脚本和样式块也会重复


如何避免这个问题?

< P>只要这些块在自定义控件中,你就不能做任何事情来消除重复,你应该考虑把它们移到另一个地方,或者通过代码添加它们。 编辑:我的回答假设您正在抱怨脚本/样式文件的重复链接。但是,如果您正在讨论控件内的完整脚本,请参阅。

Script 您可以使用ClientScript对象以编程方式在Page_Load中注册脚本,而不是在aspx中写入脚本:

if (!ClientScript.IsClientScriptBlockRegistered("myScript"))
{
    ClientScript.RegisterClientScriptBlock(GetType(), "myScript", "//the javascript code...", true);
}
风格
对于样式,我不知道是否有任何机制可以实现这一点。也许你可以使用主题机制。我自己没有使用过,所以我不知道它是如何工作的…

我能想到的唯一方法是将自定义控件拆分为子控件

将主体控件创建为无样式和无脚本控件。然后,创建一个设计器控件,用于吸入多个主体控件。然后可以将Designer控件添加到aspx页面一次

如果您不知道编译时需要多少身体部位,请向Designer控件添加一个参数,该参数允许您在运行时从代码隐藏中动态添加主要部位


顺便说一句,如果你以前从未使用过动态控件,那就玩得开心吧

谢谢你的回答。我刚刚创建了一个助手控件,它创建了我的样式和脚本,我只在我的aspx页面上放置了一次。因此,我可以添加实际控制的多个实例,而无需冗余代码