【问题标题】:Placing code behind for a DNN page为 DNN 页面放置代码
【发布时间】:2012-05-15 21:41:06
【问题描述】:

我很难找到可以为我的 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 页面正确添加代码隐藏吗?

【问题讨论】:

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


    【解决方案1】:

    为了使皮肤尽可能独立,我通常在皮肤的 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" %>
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 2015-02-27
        相关资源
        最近更新 更多