使用ASP.NET自定义控件链接CSS样式表

7
我正在开发一个自定义控件,它由表格和按钮组成。我还有一个外部的CSS样式表,定义了这些元素的样式。
该控件的类型为CompositeControl,位于MyControls命名空间下,类的定义在一个名为CompositeControl.cs的类文件中,生成的dll文件名为MyControls.dll。
样式表称为styles.css,与CompositeControl.cs在同一个文件夹中。
对于每个控件(按钮、TableCell等),我都指定了CssClass属性。
当我将此控件添加到我的ASP.NET网页并在本地主机运行时检查HTML源代码时,我看到所有控件标记都正确设置了class属性,但源代码中没有包含标签,这是包括外部样式表所必需的。
请问还需要做什么才能使其工作?谢谢。
1个回答

7

外部源文件不会自动包含在页面中。您需要在控件中手动注册它们到您的页面中:

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来获取嵌入资源的位置。这里有一个示例,展示如何引用嵌入资源。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接