将CSS类添加到DnnModule外部div

时间:2012-06-20 18:16:49

标签: dotnetnuke skinning

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>

答案 2 :(得分:1)

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

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

像(未经测试)的东西:

$(".DNNModule").addClass("MyMagicClass");

答案 3 :(得分: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>