<dnn:icon>控件没有CssClass支持</dnn:icon>

时间:2014-05-16 13:40:04

标签: c# class dotnetnuke containers partial

实现使用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.ascx.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模块所需的效果,并且似乎没有破坏任何东西但是我担心一旦升级覆盖管理目录,我的所有更改都将被删除

使用皮肤文件夹中的文件有正确的方法吗?我可以在容器内进行吗?

1 个答案:

答案 0 :(得分:1)

我会将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 Corp是否会在未来版本中包含您的更改,以便您可以专门定位图标,而无需通过代码或通过代码手动执行我建议的方法。