asp.net core: das Visual Studio Projekt

dontet core ist das neue schlanke Framework für den C# und VB.NET Entwickler. Es steht im Wettbewerb zu node.js. Der Ansatz corss Platform ist bei beiden ident, nur das das eine mit Javascript und relativ heftig in der Kommandozeile und das Redmonder Produkt native .net ist und Visual Studio und die Kommando Zeile kann.

Die Artikel Serie richtet sich an den ASP.NET Webforms Entwickler und gibt einen einfachen Einstieg in die Entwicklung mit ASP.NET Core, der Razor View Engine und Visual Studio. Als Programmiersprache kommt C# zum Einsatz, weil aktuell keine Unterstützung für VB.NET vorhanden ist.

Starten Sie Visual Studio 2017 und legen ein neues Projekt an- Visual C# –.NET Core- ASP.NET Core Webanwendung- hier CoreBlog genannt

image

Wählen Sie im nächsten Dialog WebAnwendung aus. Beachten Sie die Version .NET Core 2.1

image

Die Projektstruktur umfasst folgende Verzeichnisse

  • wwwroot für statische Dateien, wie Images oder HTML
  • Pages für Razor Views und Modelle also die ASPX Seiten und Codebehind

Folgende Dateien steuern die Anwendung

  • Startup.cs für Konfiguration des Webservers und Anwendung per Code
  • appsettings.json Konfiguration statt web.config aber funktionell nicht vergleichbar
  • program.cs Einstiegspunkt in die Anwendung so in der Art wie global.asax

Unser Projekt hat bereits das Bootstrapping erledigt und umfasst alle Arten von Razor Dateien die nötig sind. Ein klassischer Ansatz von CRUD Ansicht – also ein Formular für Create Read Update und Delete wird in ein Unterverzeichnis Pages angelegt.

image

Das Projekt hat Initial folgende Razor View Dateien

_viewimports.cshtml

   1:  @using CoreBlog
   2:  @namespace CoreBlog.Pages
   3:  @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

 

Dies definiert sozusagen die Import aus der Page Direktive einer ASPX Seite. Zeile 3 aktiviert die MVC Taghelper, die lesbare Syntax im HTML Code nutzen um Funktion zu injizieren ala

image

_viewstart.cshtml

   1:  @{
   2:      Layout = "_Layout";
   3:  }

Die Datei entspricht einer Masterpage nur für Code. Erkennbar ist die typische @ Razor Syntax um Code in den HTML Part zu mischen.

Wobei diese Seite auf eine weitere Art Masterpage für Layout verweist. Die _Layout findet sich in Pages/Shared Verzeichnis. In diese Datei wird dann der HTML Frame und in der Regel dann z.B. die Links zu den Bibliotheken wie Bootstrap einbaut.

_Layout.cshtml

   1:  <!DOCTYPE html>
   2:  <html>
   3:  <head>
   4:      <meta charset="utf-8" />
   5:      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   6:      <title>@ViewData["Title"] - CoreBlog</title>
   7:   
   8:      <environment include="Development">
   9:          <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
  10:          <link rel="stylesheet" href="~/css/site.css" />
  11:      </environment>
  12:      <environment exclude="Development">
  13:          <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/
3.3.7/css/bootstrap.min.css"
  14:                asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
  15:                asp-fallback-test-class="sr-only" asp-fallback-test-property="position"
asp-fallback-test-value="absolute" />
  16:          <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
  17:      </environment>
  18:  </head>
  19:  <body>

 

Die eigentliche Content Datei, hier about.cshtml enthält dann nur den Template HTML Code und den C#Code angeführt vom @ Zeichen (statt <%)

   1:  @page
   2:  @model AboutModel
   3:  @{
   4:      ViewData["Title"] = "About";
   5:  }
   6:  <h2>@ViewData["Title"]</h2>
   7:  <h3>@Model.Message</h3>

 

Letztendlich gibt es dann pro View eine Model Klasse, die der Codebehind Datei in Webforms entspricht.

about.cshtml.cs

   1:  namespace CoreBlog.Pages
   2:  {
   3:      public class AboutModel : PageModel
   4:      {
   5:          public string Message { get; set; }
   6:   
   7:          public void OnGet()
   8:          {
   9:              Message = "Your application description page.";
  10:          }
  11:      }
  12:  }

Da ASP.NET MVC und auch Razor als alternative View Engine dem Routing Konzept folgt, wird je nach HTTP Verb (Get Post) eine entsprechende Methode, hier OnGet statt Page_load benötigt.

Kommentare sind geschlossen