& lt;款:ICON>控件没有CssClass支持

本文关键字:控件 CssClass 支持 ICON lt | 更新日期: 2023-09-27 18:03:53

实现一个使用DotNetNuke标准图标的容器。

<%@ Control AutoEventWireup="false" Explicit="True"
            Inherits="DotNetNuke.UI.Containers.Container" %>
<%@ Register TagPrefix="dnn" TagName="icon" 
             Src="~/Admin/Containers/Icon.ascx" %>  
<dnn:icon id="dnnICON" runat="server" CssClass="img-circle" />

这将HTML模块呈现到页面上,但不传递css类名,因此图像是未样式化的。

编辑/admin/containers/icon. asx .cs我添加了以下代码:

namespace DotNetNuke.UI.Containers
{
  public partial class Icon : SkinObjectBase
  {
    public string CssClass { get; set; }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        try
        {
            if (!String.IsNullOrEmpty(CssClass))
            {
                imgIcon.CssClass = CssClass;
            }
        }
        catch (Exception exc)
        {
            Exceptions.ProcessModuleLoadException(this, exc);
        }
    }
}

这具有传递CSS类到页面中的HTML模块的预期效果,并且似乎没有破坏任何东西,但我担心,一旦升级覆盖管理目录,我所有的更改将被清除。

是否有正确的方法使用皮肤文件夹内的文件来做到这一点?我可以在集装箱里做吗?

& lt;款:ICON>控件没有CssClass支持

我会将dnn:icon控件包装在div中,并以这种方式定位它。

<div class="dnnIcon"><dnn:icon id="dnnICON" runat="server" CssClass="img-circle" /></div>

,然后在你的CSS中输入

.dnnIcon IMG{ STYLE GOES HERE }

您是正确的,除非您重新进行更改,否则在下次DNN升级时将丢失这样的更改。

另一个选择是在GitHub上提交一个Pull请求到dnn平台项目,看看dnn公司是否会在未来的版本中包含您的更改,这样您就可以专门针对图标,而不必通过代码或通过我建议的方法手动执行。