【问题标题】:Apply CSS to single instance of Custom user Control in ASP:NET将 CSS 应用于 ASP:NET 中的自定义用户控件的单个实例
【发布时间】:2012-01-07 11:48:41
【问题描述】:

好的,我创建了如下所示的简单用户控件

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PlaceHolderCMS.ascx.cs" Inherits="Controls_PlaceHolderCMS" %>

<div id="contentPlaceholder" runat="server" class="contentPlaceholderStyle">
</div>

我就是这样用的

<div class="mainField" runat="server">             
  <cms:PlaceHolder ID="PlaceHolderCMS1" runat="server" class="PH1" />
  <cms:PlaceHolder ID="PlaceHolderCMS2" runat="server" />
</div>

但我的问题是 CSS,我可以编辑与整个控件相关联的样式,像这样

.contentPlaceholderStyle
{
    border-style :dashed;
    background-color:transparent;
    border-width:1px; 
    padding: 10px, 10px, 0px, 0px;  
    margin:15px;
    height:100px;
}

但是当我尝试为用户控件的单个实例设置样式时,什么都没有发生。我从样式表中尝试了这个,就像这样

.PH1
{    
    height:100px;
}

来自 C#,像这样 protected void Page_Load(object sender, EventArgs e)

{

PlaceHolderCMS1.Attributes["style"] = "width=" + width + "%; height:" + height + "px;" ;

}

所以我的问题是如何为自定义控件的实例添加样式属性?我想为整个控件设置通用样式,并在需要时为特定实例覆盖它们。

提前谢谢你....

【问题讨论】:

    标签: asp.net css custom-controls instance


    【解决方案1】:

    您的问题是 UserControl 没有为自己呈现任何标签。因为那没什么可以应用你的课程。因此,您绝对有责任为您的控件提供一些自定义 CssClass 属性,并将其分配给包含所有控件子项的容器。

    控件的标记:

    <div class='<%= CssClass %>' >
        <div id="contentPlaceholder" runat="server" class="contentPlaceholderStyle">
        </div>
    </div>
    

    控件的代码隐藏:

    [CssClassProperty]
    public string CssClass
    {
        get { return (string)(ViewState["CssClass"] ?? ""); }
        set { ViewState["CssClass"] = value; }
    }
    

    【讨论】:

    • 我按照您建议的方式更改了我的 UserControl,并尝试在 .aspx 中应用 CssClass 属性,例如 &lt;cms:PlaceHolder ID="PlaceHolderCMS1" runat="server" CssClass="PH1" /&gt;,但仍然没有任何反应。 Css和以前一样……我做错了吗?
    【解决方案2】:

    最简单的方法是在控件上设置多个类。在控件初始化期间,您可以将默认类添加到您的代码定义的任何类中,即:

    this.CssClass += "contentPlaceholderStyle";
    

    在您的初始化中。

    【讨论】:

    • 我可以这样做,但我的问题是我无法从代码中访问样式。示例 PlaceHolderCMS1.Styles.Add 无法访问它返回错误。
    • @stanislav,对不起,我说的是控件类本身,你也可以设置一个属性,例如,在 .aspx 文件中使用类似的东西设置类:
    【解决方案3】:

    您似乎将样式应用于用户控件本身,但您想要做的是将样式应用于控件中最外层的 div。除非您覆盖用户控件的属性以引用最外层 div 的属性,否则这应该不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      相关资源
      最近更新 更多