zurück
Autor:
Erstellt am: 28 Aug 2001 00:00

Codebehind but no secrets

Eines der tollen Features von ASP .NET ist den Code vom Design zu trennen. Sieht man sich die Samples aus dem Quickstart Tutorial an, so erscheinen die Codezeilen meist am Anfang der Seite.
(z.B. http://www.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/intro/Intro11.src)

Der Code wird dabei immer von Script Tags eingeschlossen, in denen die gewählte Sprache angegeben ist. Dabei ist ein Wechsel der Sprache innerhalb der Seite nicht möglich. Trotzdem erscheint immer wieder Code in den HTML Bereichen. Dies ist nötig um z.B. Daten an einer bestimmten Stelle auszugeben. So wird bei einem Repeater Control die Datenbindung erzeugt.

<%# DataBinder.Eval(Container.DataItem, "title") %>

Aber auch normaler Code lässt sich einbetten, wenn dies auch nicht dem Design zuträglich ist. Die Empfehlung ist, soweit als möglich mit Labels zu arbeiten und diese im Page Load Event zuzuweisen.Noch zu erwähnen sei zu dieser Methode, das die Seiten nicht Compiliert werden müssen. Dies passiert beim ersten Aufruf einer Seite durch einen Benutzer von ganz alleine. Trotzdem wird eine DLL erzeugt die sich unterhalb des Windows Verzeichnis / Temporary ASP.NET Files befindet.

Neben dieser Methode der Programmierung gibt es die Trennung in zwei verschiedene Dateien. Dies ist das eigentlich wirklich neue. Hier kann man unterscheiden zwischen Visual Studio und dem manuellem Programmieren. Betrachten wir zunächst, wie Visual Studio .NET dies löst.

Nach hinzufügen eines neuen Webformulars über den Visual Studio Explorer werden zumindest zwei Dateien geleichen Namens mit unterschiedlicher Extension erzeugt. Eine Datei.ASPX und eine Datei.ASPX.VB. In Wirklichkeit kommt noch eine dritte Datei hinzu, die in diesem Zusammenhang aber keine Rolle spielt.

Hier wird der HTML Code in der Datei.ASPX gehalten und der Programmcode (hier VB) in der Date mit der Extension VB oder CS für C#. Damit diese beiden Dateien wieder zusammenfinden, ist aber ein erheblicher Aufwand nötig, der aber von Visual Studio weitestgehend automatisiert übernommen wird.

Zunächst sticht die erste Zeile in der ASPX Seite ins Auge.

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Datei.vb" Inherits="Anwendung.Datei" %>

Hier wird angegeben wie die Seite heißt, die den Code enthält über das Attribut Codebehind. Da das ganze Zeugs irgendwie in Klassen gepackt werden muss, wird auch noch vererbt über das Attribut Inherits. In diesem Fall heißt die Anwendung eben Anwendung und die Klasse Datei ( wie die Datei). Das ganze wird später manuell kompiliert und in das Assembly gelegt, das sich wieder im BIN Verzeichnis der Applikation findet.

Jetzt kommt noch die letzte Hürde. Auch in der VB Datei muss einiges bekannt gemacht werden. Dies sind vor allem die Controls von der HTML Seite (ASPX).

Dies passiert innerhalb der Klasse nach der Inherits Anweisung über das Schlüsselwort Protected und WithEvents. Dann folgt der Name des Controls und der Typ.

Protected WithEvents cmdSave As System.Web.UI.WebControls.Button

Protected WithEvents cmdUpload As System.Web.UI.HtmlControls.HtmlInputButton

Damit ist das nötigste getan und die Events, Methoden und Eigenschaften können genutzt werden.

Durch eine leichte Veränderung in der Page Deklaration des APX Files kann die dritte Methode verwendet werden.

<%@ Page Language="vb" AutoEventWireup="false" src="Datei.vb" Inherits="Datei" %>

Dabei wird das Attribut src anstatt codebehind verwendet. Es muss anschließend auch nicht mehr von der Applikation sondern pur von der Seite vererbt werden. Der Kompiler springt hier automatisch bei ersten Seitenaufruf an. Diese Methode ist praktisch, wenn schnell eine Seite mit Notpad geändert werden soll, ohne den Kompiler explizit zu bemühen.

Dieser Text bezieht sich auf die Beta 2, trifft aber auch auf die Beta 1 zu.

 

 


© Copyright 2008 ppedv AG