asp.net - 将 CSS 应用于 ASP :NET 中自定义用户控件的单个实例

标签 asp.net css custom-controls instance

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

<%@ 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/

相关文章:

javascript - ASP.NET - 添加到 Button 的 onclick 属性意味着页面无法确定回发源

javascript - jQuery:CSS更改后何时查询新的外部高度?

jquery - 在网格中剪切图像并翻转它

c# - 为什么我的用户控件绘制事件不只在一个控件上填充我的矩形?

javascript - 如何将选定的下拉列表值附加到 aspx 页面本身的超链接查询字符串

c# - NLog ASP.Net 查看器

asp.net - 如何在 Visual Studio 2019 中自动重新加载 .NET Core 项目

Rails 应用程序中侧边栏的 CSS 不适用于生产

ios - iOS 中的自定义 View 大小不是动态的

c# - 简单的复合控件 - 回发不起作用