Размещение кода позади для страницы DNN - PullRequest
2 голосов
/ 16 июня 2009

У меня проблемы с поиском места, где я могу разместить код для моих dnn-страниц.

Например:

MyPage.ascx уже имеет

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

что нужно для нанесения на кожу.

Однако я хочу иметь возможность добавить функцию VB, которая выполняется в Page_Load, поэтому я создал свой собственный файл с выделенным кодом. Но я не могу взять текущий элемент управления (один ссылающийся на skin.vb), чтобы вставить свой собственный, и у вас не может быть более одного элемента управления.

Я также пытался встроить код в тег, но мне нужно выполнить некоторые операции импорта, которые выдают ошибку, в которой говорится, что они должны быть объявлены в начале файла и т. Д. И т. Д.

Кто-нибудь знает, как правильно добавить код для страниц DNN?

Ответы [ 2 ]

6 голосов
/ 17 июня 2009

Чтобы скин был как можно более автономным, я обычно добавляю блок сценария в файл 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" %>
0 голосов
/ 16 июня 2009

Вы должны быть в состоянии добавить файл с кодом, который сам по себе наследует от Skin.

Тем не менее, я бы посоветовал сохранить ваш скин в самом файле .ascx (очень редко для скинов DNN включать код). Чтобы добавить Imports, вы можете использовать директиву @ Import на странице вместо оператора Imports в вашем VB.

...