2009-06-16 6 views
2

Ich habe Probleme zu finden, wo ich Code-Behind für meine DNN-Seiten setzen kann.Platzieren von Code für eine DNN-Seite

Zum Beispiel:

MyPage.ascx hat bereits

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

, die es braucht, um auf eine Haut gegossen zu werden.

Allerdings möchte ich in der Lage sein, eine VB-Funktion hinzuzufügen, die auf Page_Load ausgeführt wird, also habe ich meine eigene Code-Behind-Datei. Aber ich kann die aktuelle Kontrolle (eine referenzierende skin.vb) nicht herausnehmen, um meine eigene zu setzen, und Sie können nicht mehr als eine Kontrolle haben.

Ich habe auch versucht, den Code in einem Tag einbetten, aber ich brauche einige Importe zu tun, die mir einen Fehler, sagen, dass sie am Anfang der Datei etc etc ...

Wer weiß, wie erklärt werden müssen, um Code-Behind für DNN-Seiten richtig hinzufügen?

Antwort

0

Sie sollten in der Lage sein, eine Codebehind-Datei hinzuzufügen, die selbst von Skin erbt.

Allerdings würde ich vorschlagen, Ihre Haut in der .ascx-Datei selbst enthalten (es ist sehr ungewöhnlich, dass DNN-Skins Code enthalten). Um die Importe hinzuzufügen, können Sie die @ Import-Direktive auf der Seite anstelle der Imports-Anweisung in Ihrem VB verwenden.

6

Um die Haut zu halten wie möglich in sich geschlossene, füge ich normalerweise einen Skriptblock in die ascx Datei der Haut, unter all den HTML-Code in der Haut (so ist es irgendwie aus dem Weg), etwa so:

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

Wenn mein Code keine zusätzlichen Namespaces erfordert, ich sie an der Spitze der ascx Datei in import Aussagen der Haut platzieren, etwa so:

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