我很难找到可以为我的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页面的代码隐藏?
答案 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
语句。