2

我很难找到可以为我的 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)放入我自己的控件中,并且您不能拥有多个控件。

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

有人知道如何为 DNN 页面正确添加代码隐藏吗?

4

2 回答 2

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>

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

<%@ import namespace="System.Data" %>
<%@ import namespace="System.Collections.Generic" %>
<%@ import namespace="MyCustomLibrary" %>
于 2009-06-17T12:20:05.043 回答
0

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

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

于 2009-06-16T18:30:35.217 回答