Dienstag, 1. November 2011

8 - Die kleinen Helferlein

Direkt hier gelandet? Alle Beiträge über WebMatrix zeigen

WebMatrix ist sehr stark darauf ausgerichtet, dass fertige Quellen einfach eingebunden werden können. Ein wichtiges Instrument sind dabei die 'Helper'. Helper sind vom Prinzip her Klassen, deren Methoden und Eigenschaften äusserst einfach angesprochen werden können.

Auf eine Vielzahl von Helpern kann über die Admin Seite zugegriffen werden.Es gibt aber auch noch andere Quellen wie die Snippet Plattform Gist. Snippets sind kleine wiederverwendbare Codeschnipsel.

Im folgenden wollen wir einmal ein Gästebuch in die Bäckerei einbauen. Die Bäckerei wie in Folge 5 beschrieben, kann schon mal gestartet werden. Die dort gemachten Codeanpassungen werden für das Gästebuch nicht benötigt. Es kann also auch das Standardtemplate verwendet werden. Als Vorbereitung benötigen wir nun noch eine neue Seite (rechts-Click auf den Root Eintrag - New File - CSHTML) mit dem Namen '_AppStart.cshtml'. Ausserdem wird noch ein Folder 'App_Code' und eine Seite GuestbookHelper.cshtml benötigt. Die defaultmässigen Inhalte der neuen Seiten können gelöscht werden. Das Ganze sieht dann so aus:


Nun holen wir uns ein Helperscript von Gist:


Ein Click auf den Gästebuch Helper zeigt das Script. Um das Script kopieren zu können muss oben rechts 'raw' angewählt werden, sonst gibt es einen Buchstabensalat:


Das Script wird in den Kopierpuffer genommen und in die vorhin neu erstellte Seite 'GuestbookHelper.cshtml' kopiert. Anschliessend muss der Name der Datenbank in der ersten Codezeile eingetragen werden. Bei uns heisst die Datenbank 'bakery':

Nun initialisieren wir die Datenbank ....


.... und tragen auf der Seite 'Default.cshtml' folgenden Code ein:


Obiger Code bewirkt eine Anzeige des Gästebuchs. Man kann jetzt ruhig einmal die Seite mit Run ausführen. Auf 'Home' sihet man aber erst den Titel 'Gästebuch'. Noch nicht sehr sexy. Klar, wir brauchen noch Einträge. Somit ergänzen wir die Seite 'About' wie folgt:


Drückt man jetzt auf Run und wechselt auf About, sieht man ein Eingabeformular:


Nicht schlecht für eine Codezeile, oder? Leider hat das ganze nun noch einen Haken. 'Show Form' zeigt zwar das Eingabeformular, einen Befehl, den Eintrag zu speichern ist aber nirgens ersichtlich. In der konventionellen Programmierung würde nun der Befehl an die Datenbank folgen, nicht aber im Web. Hier wird das Formular mit 'Submit' abgeschickt und ruft sich selbst wieder auf. Im Kopf des Formulars wird dann geprüft, ob Einträge vorhanden sind. Wem das nicht geläufig ist, muss sich unbedingt in die Thematik einarbeiten.

Also brauchen wir im Kopf des Formulars noch folgenden Code:


Damit veranlassen wir den Eintrag in die Datenbank und springen nach dem Eintrag gleich auf die Seite Home. Der Helper verfügt über einen eigenen Test, ob ein Post Eintrag vorhanden ist. Auf die gezeigte Weise spart man sich aber einige CPU Takte, da der Helper nur bei einem Eintrag aufgerufen wird. Wenn nun alles richtig ist, müssten die Einträge jetzt vorgenommen werden und das sieht dann so aus:


Cool, nicht! Aber wo werden jetzt eigerntlich die Einträge gespeichert? Schauen wir unds doch mal die Datenbank an:


Wie man sieht, wurde eine Tabelle 'Guestbook' in der Datenbank 'bakery.sdf' angelegt. Hier werden die Daten verwaltet.

Zum Schluss wie üblich noch ein Linktipp. Im Webcast von Dariusz Paris werden die Helper und vieles mehr anschaulich erklärt.

Keine Kommentare:

Kommentar veröffentlichen