2010-06-04 66 views
7

我正在开发一个由表格和按钮组成的自定义控件。我也有一个外部CSS样式表,用于定义这些元素的样式。将CSS样式表与ASP.NET自定义控件链接

控件的类型是CompositeControl的,下命名空间MyControls和类的定义是在类文件中CompositeControl.cs并且所产生的DLL文件被命名为MyControls.dll

的样式表被称为styles.css并与CompositeControl.cs位于同一文件夹中

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

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

有人能告诉我还有什么我需要做的,以使这项工作?谢谢。

回答

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让你嵌入资源的位置。这里是引用嵌入式资源的an example

+0

谢谢。有效。 – 2010-06-04 21:10:01

+0

使用GetWebResourceUrl后,样式表不会被链接。 – 2010-06-04 21:23:25

+0

@ wacky_coder:是的,我现在看到问题了,第一个参数,类型参数应该是资源的容器。在这种情况下,您的控件的类型。 – Canavar 2010-06-04 21:38:38