2009-06-16 6 views
2

J'ai des problèmes à trouver où je peux mettre du code-behind pour mes pages dnn.Le code derrière pour une page DNN

Par exemple:

MyPage.ascx a déjà

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

dont il a besoin pour être jeté à la peau.

Cependant, je veux être en mesure d'ajouter une fonction VB qui est exécutée sur Page_Load, j'ai donc créé mon propre fichier code-behind. Mais je ne peux pas enlever le contrôle actuel (un référencement skin.vb) pour le mettre dans le mien, et vous ne pouvez pas avoir plus d'un contrôle.

J'ai aussi essayé intégrer le code dans une balise, mais je dois faire des importations qui me donnent une erreur disant qu'ils doivent être déclarés au début du fichier etc etc ...

Quelqu'un sait comment ajouter correctement le code-behind pour les pages DNN?

Répondre

0

Vous devriez pouvoir ajouter un fichier codebehind qui, lui-même, hérite de Skin.

Cependant, je suggère de garder votre peau contenue dans le fichier .ascx lui-même (il est très rare pour les skins DNN d'inclure du code). Pour ajouter les importations, vous pouvez utiliser la directive @ Import dans la page, au lieu de l'instruction Imports dans votre VB.

6

Pour garder la peau autonome que possible, j'ajoute généralement un bloc de script dans le fichier ascx de la peau, au-dessous tout le code HTML dans la peau (il est un peu hors de la voie), comme suit:

<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> 

Si mon code nécessite des espaces de noms, je les place en haut du fichier ascx de la peau dans import déclarations, comme ceci:

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