2

我正在 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 来定义这些图像 url,这些 CSS 将被用户添加的任何 css 覆盖,并且让默认 CSS 包含嵌入在 ServerControl 程序集中的图像的 URL。

而且我也不知道该怎么做。就此而言,我也确定这是最好的方法。

有任何想法吗?

4

1 回答 1

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 为空时才写出您的标准 CSS。

于 2010-03-29T19:34:11.973 回答