【问题标题】:<DNN:ICON> control has no CssClass support<DNN:ICON> 控件不支持 CssClass
【发布时间】:2014-05-16 13:40:04
【问题描述】:

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

是否有使用皮肤文件夹中的文件的正确方法来执行此操作?我可以在容器内进行吗?

【问题讨论】:

    标签: c# class dotnetnuke containers partial


    【解决方案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 上向 dnn 平台项目提交拉取请求,以查看 DNN Corp 是否会在未来版本中包含您的更改,以便您可以专门针对图标,而无需通过代码或通过手动执行我建议的方法。

    【讨论】:

    • 对于这样的简单更改,您的拉取请求很有可能被接受。请参阅dnn-connect.org/community/blogs/… 了解如何执行此操作。由于您只编辑一个文件,您可能可以通过 GitHub 本身来完成(单击 github.com/dnnsoftware/Dnn.Platform/blob/development/Website/… 上的编辑按钮,这将创建一个 fork 和分支,您可以从中提交拉取请求)
    • dnn-connect 站点@bdukes 上的优秀文档,谢谢。我已经迈出了开源贡献的第一步,并按照 Chris 的建议提交了一个拉取请求。有一种温暖的毛茸茸的感觉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多