ASP.NET Webforms Scaffolding

Code-Generatoren sehe ich sehr kritisch. Speziell dann, wenn es es sich um einen One-Way-Vorgang handelt. Genau dies bietet ASP.NET Scaffolding für MVC und seit kurzem auch für Webforms. Da dieser Wizard aber doch ein wenig Arbeit sparen kann, werfen wir einen Blick darauf. Aktuell wird nur C# unterstützt. VB.NET ist in Vorbereitung.

Der Webforms Scaffold Generator findet sich auf Github und ist Open Source. Er wird als Erweiterung in Visual Studio 2013 unter dem Namen Web Forms Scaffolding installiert. Dem Artikel liegt die Version 0.1 Beta 2 zugrunde (muss dabei leicht schmunzeln).

Als nächstes erzeugt man ein Model im Visual Studio Web Projekt. Dies kann per Entity Framework aus einer SQL-Datenbank geschehen oder einfach im Stile von Code First durch eine Klasse. Einzig zu beachten ist, dass dies nicht im Root-Verzeichnis, sondern am Besten im Model gespeichert wird. Es kommt sonst zu einem Namespace-Konflikt, da der Generator Model und View mit identem Namen wählt.

Per Dataannotations werden im Model Validierungsregeln deklariert.

   1:  namespace scaff7.Models
   2:  {
   3:      public class person
   4:      {
   5:          [Key]
   6:          public int id { get; set; }
   7:          [Required(ErrorMessage = "Muss was rein")]
   8:          [MaxLength(10, ErrorMessage = "zu lange")]
   9:          public String Name { get; set; }
  10:          [Display(Description = "geburtstag")]
  11:          public DateTime gebDat { get; set; }
  12:      }
  13:  }

Als nächstes wird per Rechtsclick ein Item vom Typ Scaffold hinzugefügt, zu Deutsch “neues Gerüstelement”.

image

Die Vorlage heißt “Webforms Pages using Entity Framework”.  Im kommenden Dialog werden Klasse und der vorhandene DBContext ausgewählt:

image

Mehr ist es nicht. Im Visual Studio Projekt Explorer erscheint ein Unterverzeichnis mit dem Namen der Klasse und einer Datei Default für Listendarstellung und eine Datei Edit für Anzeige und Bearbeiten und eine für den Insert.

image

Dahinter werden DynamicData Templates verwendet, die man nachträglich auch anpassen kann, um seine Designwünsche zu erfüllen. Selbst die Datenbank wird beim ersten Aufruf automatisch erstellt.

Das Layout basiert auf Bootstrap 3.

image

Sehr schick ist, dass auch bereits die Validierung berücksichtigt und visualisiert wird. Dazu werden die Bootstrap CSS-Klassen verwendet wie has-errors, ohne dass man das explizit berücksichtigen muss.

image

Der erzeugte und verwendete HTML5-Code aus den Web Server Controls ist einfach zu verstehen und zu verändern. Natürlich kommt das moderne Model Binding zum Einsatz. Man darf sich nicht allzu viel erwarten, aber für einfache Datenbank Admin Frontends ist Scaffolding eine sehr effiziente Methode. Webforms sind eben noch lange nicht tot.

Kommentare sind geschlossen