将 CSS 样式表与 ASP.NET 自定义控件链接

Posted

技术标签:

【中文标题】将 CSS 样式表与 ASP.NET 自定义控件链接【英文标题】:Linking a CSS Stylesheet with an ASP.NET Custom Control 【发布时间】:2011-02-27 23:56:19 【问题描述】:

我正在开发一个由表格和按钮组成的自定义控件。我还有一个外部 CSS 样式表,用于定义这些元素的样式。

控件的类型是CompositeControl,在命名空间MyControls下,类的定义在类文件CompositeControl.cs和dll中生成的文件名为 MyControls.dll

样式表名为 styles.css,与 CompositeControl.cs 位于同一文件夹中

对于每个控件(Button、TableCell 等),我都指定了CssClass 属性。

当我将此控件添加到我的 ASP.NET 网页并在 localhost 运行时检查 html 源代码时,我看到所有控件标记都正确设置了类属性,但源代码不包含 <link> 标记包含外部样式表是必需的。

有人能告诉我我还需要做什么才能完成这项工作吗?谢谢。

【问题讨论】:

【参考方案1】:

外部源文件不会自动包含在页面中。您应该在您的控制范围内手动将它们注册到您的页面:

HtmlLink cssSource = new HtmlLink();
cssSource.Href = Page.ClientScript.GetWebResourceUrl(this.GetType(), "styles.css");
cssSource.Attributes["rel"] = "stylesheet";
cssSource.Attributes["type"] = "text/css";
Page.Header.Controls.Add(cssSource);

还可以尝试使用ClientScriptManager.GetWebResourceUrl 来获取嵌入资源的位置。这是引用嵌入式资源的an example。

【讨论】:

使用GetWebResourceUrl后,样式表没有链接。 @wacky_coder :是的,我现在看到了问题,第一个参数类型参数应该是资源的容器。在这种情况下,您的控件的类型。 在发帖之前我已经尝试过了。它根本行不通。我错过了什么吗?我需要做其他事情才能使这种方法起作用吗? 资源被嵌入到 DLL 中,但网页找不到它。

以上是关于将 CSS 样式表与 ASP.NET 自定义控件链接的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET 服务器控件动态添加 CSS 文件

如何为 ASP.NET Ajax 重用来自 Telerik RadControls 的 css 样式

如何在 ASP.NET 用户控件中指定 *.css 文件?

如何在 ASP.NET GridView Pager 中设置活动页码的样式?

c# asp.net,添加自定义控件

如何在(asp.net)自定义服务器控件中维护状态?