将 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 Ajax 重用来自 Telerik RadControls 的 css 样式