为DNN页面放置代码

时间:2009-06-16 17:53:22

标签: asp.net vb.net dotnetnuke code-behind

我很难找到可以为我的dnn页面添加代码隐藏的地方。

例如:

MyPage.ascx已经

<%@ Control language="vb" CodeBehind="~/admin/Skins/skin.vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Skins.Skin" %>

它需要才能投射到皮肤上。

但是,我希望能够添加在Page_Load上执行的VB函数,因此我创建了自己的代码隐藏文件。但是我无法取出当前的控件(一个引用skin.vb)来放入我自己的控件中,并且你不能拥有多个Control。

我也尝试在代码中嵌入代码,但是我需要做一些Imports,它给我一个错误,说它们必须在文件的开头等声明等等......

任何人都知道如何正确添加DNN页面的代码隐藏?

2 个答案:

答案 0 :(得分:6)

为了让皮肤尽可能保持自包含,我通常会在皮肤的ascx文件中添加一个脚本块,在皮肤中的所有HTML下面(所以它有点偏离),如下所示:

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then

            ' first page load logic here

        End If

        ' other page load logic here

    End Sub

    Private Function DoStuff(ByVal input As String) As Integer

        ' custom function logic

    End Function
</script>

如果我的代码需要任何其他命名空间,我将它们放在import语句中皮肤的ascx文件的顶部,如下所示:

<%@ import namespace="System.Data" %>
<%@ import namespace="System.Collections.Generic" %>
<%@ import namespace="MyCustomLibrary" %>

答案 1 :(得分:0)

您应该能够添加一个代码隐藏文件,该文件本身继承自Skin

但是,我建议将你的皮肤保存在.ascx文件本身中(DNN皮肤包含代码的情况非常罕见)。要添加Imports,您可以在页面中使用@ Import指令,而不是VB中的Imports语句。