2

有没有办法将自定义类添加到包含通过容器将模块放置在页面上时创建的“DnnModule”类的外部 div?目前,如果我制作了一个以特定宽度向左浮动的容器,除非我使用 javascript 进入 HTML 并将我的浮动属性添加到 DnnModule 级别 div,否则无法使用该布局。

例如,如果我使用脚手架系统 (bootstrap) 并希望添加几个不同大小的容器 (span3、span6、span12),当我将模块添加到包含这些容器的内容窗格时,布局将被忽略,因为DNN 在每个模块周围添加的外部 div。从 CSS 布局的角度来看,这是非常有限的,它迫使皮肤开发人员创建许多单独样式的皮肤,而不是具有多个容器的几个皮肤,以提供更大的灵活性。

4

4 回答 4

2

在 DotNetNuke.com 论坛上找到答案:

<script runat="server">    
    Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
        Try
            Dim cParent As HtmlGenericControl = CType(Me.Parent, HtmlGenericControl)
            cParent.Attributes("class") = cParent.Attributes("class") + " span6"
        Catch ex As Exception
        End Try
    End Sub
</script>

将此添加到容器 .ascx 文件中,我可以将自己的特定类插入到包装器 div 中。

来源: http: //www.dotnetnuke.com/Resources/Forums/forumid/109/threadid/458919/scope/posts.aspx

于 2012-06-21T21:05:04.820 回答
2

C#版本:

<script runat="server">    
    protected void Page_PreRender(object sender, EventArgs e) {
        try {
            HtmlGenericControl cParent = (HtmlGenericControl) this.Parent;
            cParent.Attributes["class"] += " span6";
        } catch (Exception ex) { 
            // do nothing 
        }
    }
</script>
于 2012-06-21T21:09:21.713 回答
1

我认为 DIV 总是由 DNN 自动添加,并且它总是有那个 DNNModule 类,我不认为皮肤或容器有一个扩展点来修改它。

这意味着我认为您最好的选择是使用 jQuery(IIRC 已融入当前的 DNN 图像),并在皮肤 .ascx 文件中对其进行初始化。

类似的东西(未测试):

$(".DNNModule").addClass("MyMagicClass");
于 2012-06-20T22:18:35.730 回答
0

这是一个老问题,但今天我有一个类似的问题,最后我使用这个其他解决方案尝试在后面的代码中添加一个 css 类:

<script runat="server">    
    protected void Page_PreRender(object sender, EventArgs e)
    {
        try
        {
            HtmlGenericControl body = (HtmlGenericControl)Page.FindControl("body");
            body.Attributes.Add("class", " fontSize" + Utils.SiteFontSize);
        }
        catch (Exception)
        {
            // do nothing 
        }
    }
</script>
于 2018-07-16T17:46:10.557 回答