好的,我创建了如下所示的简单用户控件
<%@ 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;" ;
所以我的问题是如何为自定义控件的实例添加样式属性?我想要整个控件的通用样式,并在需要时为特定实例覆盖它们。
提前谢谢你....
最佳答案
您的问题是 UserControl 没有为自己呈现任何标记。因为那没有什么可以应用你的类(class)。因此,您完全有责任为您的控件提供一些自定义 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; }
}
关于asp.net - 将 CSS 应用于 ASP :NET 中自定义用户控件的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288728/