我正在ASP.NET 3.5中编写ServerControl,并且我正在公开CssClass,因此用户可以操纵控件的可视外观。我的问题是我想建立合理的默认值,这样用户就不必配置CSS,除非他想更改默认值。
我的具体问题是我的控件是发出html div,需要显示背景图片。我希望用户能够在CSS中指定不同的图像,但我想显示默认的背景图像,而我无法使其工作。
整个服务器控件作为div发出,类名设置为用户在CssClass中提供的值。需要背景图像的div包含在这个外部div中,并且具有自己的类名。我目前在包含控件的页面上设置CSS中的背景图像:
<style type="text/css">
.cssClass .innerDiv {
background-image: url("http://....");
}
</style>
这样就可以绘制出合适的图像。但如果不存在,则不会绘制图像。
我想要的是ServerControl发出一些CSS来定义这些图像网址,这些网页会被用户添加的任何css覆盖,并且该默认CSS包含嵌入到图像中的图像的URL。 ServerControl的程序集。
而且我不确定如何做。就此而言,我确信这是最好的方法。
有什么想法吗?
答案 0 :(得分:1)
如果您需要多种样式,请使用CSS类(例如HeaderCssClass,ItemCssClass)公开各种属性。
此外,您可以检查如果用户指定了CSS类名,则使用该名称;否则,使用您的默认值并省略控件中的自定义CSS。
在渲染逻辑中,您可以根据用户是否指定了任何内容,将正确的CSS类名称渲染为DIV的属性。所以你可以这样做:
if (this.HeaderCssClass != null)
writer.AddAttribute("class", this.HeaderCssClass);
else
writer.AddAttribute("class", "standard");
writer.RenderBeginTag("div");
如果HeaderCssClass为null,则只写出标准CSS。